Ответы, представленные выше, решают проблему, но не объясняют странное поведение описанного ОП.Это объяснение должно помочь любому проверить связь между сайтами в среде разработки, где все эти сайты находятся на одном хосте (и на одном виртуальном хосте; я работаю с apache 2.4 и php7.0).
Есть тонкостьс file_get_contents()
я наткнулся на то, что здесь абсолютно уместно, но без адреса (возможно, потому, что оно либо едва документировано, либо не документировано из того, что я могу сказать, или задокументировано в неясной модели безопасности php, которую я не могу найти).1005 * С allow_url_fopen
, установленным на Off
во всех соответствующих контекстах (например, /etc/php/7.0/apache2/php.ini
, /etc/php/7.0/fpm/php.ini
и т. Д.) И allow_url_fopen
, установленным на On
в контексте командной строки (т.е. /etc/php/7.0/cli/php.ini
)вызовы на file_get_contents()
для локального ресурса будут разрешены, и никакие предупреждения не будут регистрироваться, например:
file_get_contents('php://input');
или
// Path outside document root that webserver user agent has permission to read. e.g. for an apache2 webserver this user agent might be www-data so a file at /etc/php/7.0/filetoaccess would be successfully read if www-data had permission to read this file
file_get_contents('<file path to file on local machine user agent can access>');
или
// Relative path in same document root
file_get_contents('data/filename.dat')
В заключение следует отметить, что ограничение allow_url_fopen = Off
аналогично правилу iptables
в цепочке OUTPUT
, где ограничение применяется только при попытке «выйти из системы» или «изменить контексты».
NB allow_url_fopen
, установленный на On
в контексте командной строки (т. Е. /etc/php/7.0/cli/php.ini
) - это то, что я имел в своей системе, но я подозреваю, что оно не будет иметь никакого отношения к предоставленному объяснению, даже если оно будет установлено на Off
если, конечно, вы не тестируете, запуская свои скрипты из самой командной строки.Я не проверял поведение с allow_url_fopen
, установленным на Off
в контексте командной строки.