WordPress показывает ошибку, связанную с allow_url_fopen.

Вопрос или проблема

Я только что установил WordPress с плагинами, всё работает нормально, кроме страницы ‘связаться со мной’, на которой появляется ошибка следующего вида.

Предупреждение: getimagesize(): php_network_getaddresses: getaddrinfo
не удалось: Имя или служба не известны в
/var/www/foobar.com/wp-content/themes/foobar/backend/theme-components/cs-header/cs_functions.php
на строке 751

Предупреждение:
getimagesize(http://dev.foobar/wp-content/uploads/2015/11/subheader-image-jobline-1.jpg):
не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось:
Имя или служба не известны в
/var/www/foobar.com/wp-content/themes/foobar/backend/theme-components/cs-header/cs_functions.php
на строке 751

cs_functions.php на строке 751 выглядит так:

    if (is_file($cs_upload_dir . $cs_img_name) || is_file($cs_images_dir . $cs_img_name)) {
        if (ini_get('allow_url_fopen')) {
            if ($header_banner_image <> '') {
                $banner_image_height = getimagesize($header_banner_image);
            }
        }
    } else if (isset($cs_upload_subdir_file) && is_file($cs_upload_dir . $cs_upload_subdir_file)) {
        if (ini_get('allow_url_fopen')) {
           // ЭТА СТРОКА 751
          $banner_image_height = getimagesize($header_banner_image);
        }
    } else {
        $banner_image_height="";
    }

Итак, я пошел в /etc/php.ini и проверил allow_url_fopen, он установлен на on

allow_url_fopen = On

Что происходит? Как я могу это исправить?

Я предполагаю, что WP установлен локально, вы убедились, что отредактировали файл hosts. Пример:

127.0.0.1 dev.foobar

Ответ или решение

Ошибка, связанная с allow_url_fopen, часто возникает в WordPress из-за проблем с разрешением доменных имен или сетевыми настройками. Давайте подробней рассмотрим вашу ситуацию и найдем решения.

Понимание проблемы

Согласно предоставленному сообщению об ошибке, WordPress не может получить URL-адрес изображения, который определен в переменной $header_banner_image. Это ошибка возникает на строке 751 в файле cs_functions.php, где используется функция getimagesize() для получения размера изображения.

Ошибки, которые вы видите:

  1. php_network_getaddresses: getaddrinfo failed: Name or service not known – это говорит о том, что скрипт не может разрешить указанный URL в IP-адрес. Это может происходить по нескольким причинам:
    • Неверно настроенные DNS.
    • Локальная среда разработки без правильных записей в файле hosts.
    • Проблемы с файерволлом или сетевыми настройками.

Проверка конфигурации

  1. Проверка записи в файле hosts: Вы указали, что WordPress может быть установлен локально, и это наиболее вероятная причина проблемы. Убедитесь, что в вашем файле /etc/hosts (или C:\Windows\System32\drivers\etc\hosts на Windows) присутствует следующая строка:

    127.0.0.1 dev.foobar

    Это позволит вашей системе правильно разрешать dev.foobar.

  2. Проверка конфигурации php.ini: Вы уже проверили, что allow_url_fopen установлен в On. Это правильно, так как для функции getimagesize() это необходимо. Однако убедитесь, что вы редактировали правильный файл php.ini. Для этого нужно перезагрузить веб-сервер после внесения изменений.

  3. Проверка функции DNS: Убедитесь, что настройки DNS правильно настроены. Вы можете попробовать использовать другие DNS-серверы, такие как Google DNS (8.8.8.8 и 8.8.4.4).

  4. Убедитесь, что URL правильный: Проверьте, что значение переменной $header_banner_image действительно ссылается на существующий файл и URL-адрес корректен.

Возможные решения

  1. Измените URL изображения: Если вы используете локальный сервер, возможно, стоит попробовать использовать относительные или локальные пути вместо абсолютных URL. Например:

    $header_banner_image = '/wp-content/uploads/2015/11/subheader-image-jobline-1.jpg';
  2. Используйте cURL: Если проблема с getimagesize() сохраняется, можно вместо этого использовать cURL для загрузки данных изображения и его размерности:

    function get_remote_image_size($url) {
       $ch = curl_init($url);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($ch, CURLOPT_NOBODY, true);
       curl_exec($ch);
       $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
       curl_close($ch);
       return $size;
    }
  3. Проверка веб-сервера: Убедитесь, что ваш веб-сервер (Apache, Nginx и т.д.) настроен правильно и не блокирует доступ к локальным ресурсам.

Заключение

При решении проблемы с allow_url_fopen стоит уделить внимание правильной настройке окружения, особенно если работаете в локальном режиме. Убедитесь в корректности записей в файле hosts, проверьте настройки DNS и попробуйте изменить способ получения изображений. Ваша цель — достичь оптимальной работы WordPress без ошибок, что обеспечит лучший пользовательский опыт на вашем сайте.

Оцените материал
Добавить комментарий

Капча загружается...