Вопрос по php, apache – php file_get_contents возвращает null, когда allow_url_fopen включен
Я получаю предупреждение: file_get_contents не удалось открыть поток отказано в разрешении
Я установил для all_url_open значение в файле php.ini.
Мой php-файл находится на моем сервере Apache, и он пытается получить доступ к URL (который возвращает JSON) с сервера Tomcat на той же машине.
Код в php-файле выглядит так:
<code> $srcURL = 'http://samemachine:8080/returnjson/'; $results = file_get_contents($srcURL); </code>
Я также попробовал curl, и он ничего не возвращает и тоже не попадает на сервер tomcat:
<code> function curl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: en-us')); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $data = curl_exec($ch); curl_close($ch); return $data; } </code>
Почему отказано в разрешении?
Возможно, удаленный сервер возвращает ошибку 401 «отказано в доступе»? Вы пытались нажать на ссылку в браузере?
Marc B
да, я могу нажать на ссылку через браузер. Я также могу поразить его с моей локальной машины с помощью приведенного выше кода php. Это tomcat или apache отказывают в доступе?
Atma
Можете ли вы получить доступ к файлу через браузер?
Reza S
Я полагаю, вы хотите сказать
allow_url_fopen
Директива?
Wiseguy
использование
cURL
сделать запрос и распечатать его полностью, включая заголовки, чтобы увидеть, что делает сервер. Установите основные заголовки запроса, такие какuser-agent
. file_get_contents()
это ленивый способ, который использует минимальные заголовки запроса и поэтому часто не работает с некоторыми веб-серверами.
MrCode
1
ответ
Похожие вопросы
Возможно, удаленный сервер возвращает ошибку 401 «отказано в доступе»? Вы пытались нажать на ссылку в браузере?
да, я могу нажать на ссылку через браузер. Я также могу поразить его с моей локальной машины с помощью приведенного выше кода php. Это tomcat или apache отказывают в доступе?
Можете ли вы получить доступ к файлу через браузер?
Я полагаю, вы хотите сказать<a href="http://php.net/allow_url_fopen" rel="nofollow noreferrer"><code>allow_url_fopen</code></a> Директива?
использование<code>cURL</code> сделать запрос и распечатать его полностью, включая заголовки, чтобы увидеть, что делает сервер. Установите основные заголовки запроса, такие как<code>user-agent</code>. <code>file_get_contents()</code> это ленивый способ, который использует минимальные заголовки запроса и поэтому часто не работает с некоторыми веб-серверами.