Вопрос или проблема
Я только что установил 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()
для получения размера изображения.
Ошибки, которые вы видите:
- php_network_getaddresses: getaddrinfo failed: Name or service not known – это говорит о том, что скрипт не может разрешить указанный URL в IP-адрес. Это может происходить по нескольким причинам:
- Неверно настроенные DNS.
- Локальная среда разработки без правильных записей в файле hosts.
- Проблемы с файерволлом или сетевыми настройками.
Проверка конфигурации
-
Проверка записи в файле hosts: Вы указали, что WordPress может быть установлен локально, и это наиболее вероятная причина проблемы. Убедитесь, что в вашем файле
/etc/hosts
(илиC:\Windows\System32\drivers\etc\hosts
на Windows) присутствует следующая строка:127.0.0.1 dev.foobar
Это позволит вашей системе правильно разрешать
dev.foobar
. -
Проверка конфигурации
php.ini
: Вы уже проверили, чтоallow_url_fopen
установлен вOn
. Это правильно, так как для функцииgetimagesize()
это необходимо. Однако убедитесь, что вы редактировали правильный файлphp.ini
. Для этого нужно перезагрузить веб-сервер после внесения изменений. -
Проверка функции DNS: Убедитесь, что настройки DNS правильно настроены. Вы можете попробовать использовать другие DNS-серверы, такие как Google DNS (8.8.8.8 и 8.8.4.4).
-
Убедитесь, что URL правильный: Проверьте, что значение переменной
$header_banner_image
действительно ссылается на существующий файл и URL-адрес корректен.
Возможные решения
-
Измените URL изображения: Если вы используете локальный сервер, возможно, стоит попробовать использовать относительные или локальные пути вместо абсолютных URL. Например:
$header_banner_image = '/wp-content/uploads/2015/11/subheader-image-jobline-1.jpg';
-
Используйте 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; }
-
Проверка веб-сервера: Убедитесь, что ваш веб-сервер (Apache, Nginx и т.д.) настроен правильно и не блокирует доступ к локальным ресурсам.
Заключение
При решении проблемы с allow_url_fopen
стоит уделить внимание правильной настройке окружения, особенно если работаете в локальном режиме. Убедитесь в корректности записей в файле hosts, проверьте настройки DNS и попробуйте изменить способ получения изображений. Ваша цель — достичь оптимальной работы WordPress без ошибок, что обеспечит лучший пользовательский опыт на вашем сайте.