Назад | Перейти на главную страницу

Проблема с локальными скриптами php fopen, возвращающими ошибку 404 на CentOS

Сегодня у меня проблемы с запущенными на нашем сервере скриптами php, которые используют file_get_contents или похожие fopen функции. Я думаю, что это ошибка openssl или брандмауэра, но я новичок в администрировании сервера, поэтому мне нужна помощь в отладке. Я возился с iptables и csf firewall settings и пытаемся настроить sftp с помощью proftpd когда он вдруг перестал работать.

Простой тест: (этот gif-файл отлично загружается через браузер)

echo file_get_contents("https://www.this-domain.com/logo.gif");
//...failed to open stream:HTTP request failed! HTTP/1.1 404 Not Found...

//However both of the following work absolutely fine:
//a local request to the same file:
echo file_get_contents("/home/user/domains/this-domain.com/private_html/media/logospin.gif");
//an external absolute url:
echo file_get_contents("https://www.google.com/");

В php.ini у меня есть: allow_url_fopen = on & extension=php_openssl.dll на. Любые идеи?

На самом деле проблема заключалась в DNS. file_get_contents() по какой-то причине странным образом маршрутизировался через наши резервные серверы имен (ns3 и ns4), в то время как браузеры маршрутизировали через основные серверы имен (ns1 и ns2). В отличие от основных, резервные копии указывают на другой сервер, на котором еще нет идентичных файлов - отсюда и необычный 404.

Я установил эти резервные серверы имен всего за несколько часов до того, как возился с брандмауэром и т. Д., И к моменту их распространения это выглядело очень похоже на команды ssh file_get_contents() не в сети.