Вопрос по php, apache – php file_get_contents возвращает null, когда allow_url_fopen включен

5

Я получаю предупреждение: 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   ответ
3
Make sure it's really allow_url_fopen and not all_url_open as you wrote Double-check this by running phpinfo(). Make sure it lists the option as enabled. If it doesn't restart your web server To debug your curl problem, run Wireshark and watch on the lo interface

Похожие вопросы