Малый контекст: Я разрабатываю функцию eval, способную обнаруживать проблемы синтаксического анализа. Он нуждается в file_get_contents
в созданном PHP-файле, используя его URL-адрес. Пожалуйста, не говорите, что EVAL - это ЗЛО. Я опубликую свою новую функцию eval после исправления этой проблемыPHP + IIS: file_get_contents «зависает» с использованием URL-адреса localhost
OK. Простой тест:
$fc = "Not executed";
$tmpDir = "var/temp-eval/";
$tmpfname = "t.php";
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 1
)
)
);
echo "BEGIN<br>";
//// Both below makes the page hangs
// TRY #1
//$fc = @file_get_contents(Common::getRootUrl() . $tmpDir . $tmpfname, false, $ctx);
// TRY #2
//$fc = @file_get_contents(Common::getRootUrl() . $tmpDir . $tmpfname);
//// Below, doesn't hang
// TRY #3
//$fc = file_get_contents("http://www.SOMEWEBSITE.COM");
echo $fc;
echo "<br>END";
Сохранение как есть, все прокомментировал, оно работает. Страница заканчивает загрузку и показывает HTML.
раскомментировав либо TRY # 1 или TRY # 2 (внутренний URL), страница никогда не заканчивает загружать. Но ... используя xdebug и следуя коду, я вижу содержимое, полученное в $fc
, и, похоже, код работает нормально - кроме зависания. Но ... используя этот код на сервере Linux с помощью Apache, он отлично работает. :) :(
раскомментировав TRY # 3 (внешний URL), он прекрасно работает как на окружающую среду.
Я подозреваю, что конфигурация в IIS, который имеет некоторые трудности для запуска двух веб-страниц в настоящее время, но не нашел . что-поиска в Интернете
SETUP: IIS 10 + Windows 10 Home + PHP 5.6