За последние 24 часа нас посетили 39074 программиста и 7463 робота. Сейчас ищут 1511 программистов ...

Почему file_get_contents() возвращает NULL?

Тема в разделе "PHP для новичков", создана пользователем vgiv, 13 фев 2024.

  1. vgiv

    vgiv Новичок

    С нами с:
    13 фев 2024
    Сообщения:
    4
    Симпатии:
    0
    Привет всем!

    Имею PHP 5.4.19. Желая получить содержимое текстового файла (заведомо лежащего по данному URLу - в браузере всё открывается), пишу:
    Код (Text):
    1. $txt = file_get_contents('https://www.sidc.be/SILSO/DATA/EISN/EISN_current.txt');
    2. var_dump($txt);
    и получаю NULL.
    На другом сервере (и другом PHP 7.4.33) всё работает. На том же сервере, но с другими URL, например, https://www.google.com/ - тоже всё ОК.
    Догадываюсь, что дело, вероятно, в настройках PHP, но доступа к ним не имею. Можно ли как-нибудь поменять код, чтобы он работал и в первом случае? Пробовал cURL, но результат тот же.

    Владимир.
     
    #1 vgiv, 13 фев 2024
    Последнее редактирование: 13 фев 2024
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Скорее всего параметр конфигурации не выставлен: php.ini
    Код (Text):
    1. allow_url_fopen = On
     
  3. vgiv

    vgiv Новичок

    С нами с:
    13 фев 2024
    Сообщения:
    4
    Симпатии:
    0
    А как это согласуется с тем, что
    Код (Text):
    1. $txt = file_get_contents('https://www.google.com/');
    работает штатно?
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Если на том же сервере, где первая ссылка не открывается, а эта открывается, возможно, какой-то бан с их стороны, у меня на локальной машине всё ок.
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день, Владимир!
    Интересный вопрос.
    Проверил на PHP 5.4
    PHP:
    1. <?
    2. echo ini_get("allow_url_fopen"),"<br>";
    3. $url = 'https://www.sidc.be/SILSO/DATA/EISN/EISN_current.txt';
    4. $txt = file_get_contents($url);
    5. var_dump($txt);
    6. echo "<hr>";
    7. $ch = curl_init();
    8. $url = strtolower($url);
    9. curl_setopt($ch, CURLOPT_URL, $url);
    10. $result = curl_exec($ch);
    11. echo 'Curl-Error: ' . curl_error($ch),"<br>";
    12. var_dump($result);
    13. ?>
    allow_url_fopen=1 т.е. проблема не в php.ini
    Если бы Вы попробовали в cURL добавить curl_error, то увидели в чём причина:
    Можно попытаться как-то обойти, но проще забыть PHP 5.4 как кошмарный сон и перейти на актуальную версию PHP.
    Удачи!
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    У меня под Win10 на PHP 5.4.45x64 приходит, на 5.4.45x86 не приходит, откуда на серверах такая древность?
     
  7. vgiv

    vgiv Новичок

    С нами с:
    13 фев 2024
    Сообщения:
    4
    Симпатии:
    0
    Как я уже сказал, доступа к настройкам PHP не имею, и предпочёл бы не привлекать внимание администрации к тому, что я вообще использую PHP. Быть может, намекнёте на направления обхода?
    Так получилось Ж)
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Я бы поставил пиво админу сервера за обновление PHP до актуальной версии и установку нужных настроек, проще выхода не вижу.
     
  9. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Намёк на направление обхода - API.
    На сайте, с которого Вы безуспешно пытаетесь прочесть данные на PHP 5.4.19, есть страница
    https://www.sidc.be/SVO (SOLARNET Virtual Observatory)
    там есть ссылка на HEK database: https://www.lmsal.com/heksearch/
    Есть и API по этой теме https://sunpy.org
    Удачи!

    P.S. Однако, PHP 5.4.19 это очень "короткий поводок" и успех при любых направлениях маловероятен .
     
  10. vgiv

    vgiv Новичок

    С нами с:
    13 фев 2024
    Сообщения:
    4
    Симпатии:
    0
    Спасибо, попытаюсь разобраться.