Nginx и PHP-cgi - не могут file_get_contents любого веб-сайта на сервере - PullRequest
2 голосов
/ 29 августа 2011

Это лучше всего объяснить кодом, я думаю. Из веб-каталога:

vi get.php

Добавьте этот php в get.php

<?
echo file_get_contents("http://IPOFTHESERVER/");
?>

IPOFTHESERVER - это IP-адрес сервера, на котором работают nginx и PHP.

php get.php

Возвращает содержимое веб-сайта (по умолчанию), размещенного на этом I.P. НО

http://IPOFTHESERVER/get.php

.. возвращает 504 Время ожидания шлюза . То же самое с завитком. То же самое, используя команду exec PHP и GET. Однако из командной строки напрямую все отлично работает.

Я тиражировал его на 2 серверах nginx. По какой-то причине nginx не позволит мне установить HTTP-соединение с сервером, на котором он работает, через PHP (если только это не через командную строку).

У кого-нибудь есть идеи, почему?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 31 августа 2011

Убедитесь, что вы не сталкиваетесь с истощением рабочего на стороне PHP, это была проблема в моей настройке лабораторного сервера, которая была настроена для экономии оперативной памяти.

В основном я забыл, что вы используете одного работника дляобрабатывать главную страницу, отображаемую для конечного пользователя, затем функция get_file_contents () в основном генерирует отдельный HTTP-запрос к одному и тому же веб-серверу, фактически требуя 2 рабочих для загрузки одной страницы.

В качестве первогостраница использовала последнего работника, для функции get_file_contents не было ни одного доступного, поэтому Nginx в конечном итоге ответил 504 на первой странице, так как не было ответа на запрос обратного прокси.

0 голосов
/ 29 августа 2011

Проверьте, установлено ли значение allow_url_fopen в вашем php.ini на true.

...