getimagesize() не удалось открыть поток: HTTP-запрос не выполнен! ошибка

Я использую WordPress в своем блоге, но я вижу повторяющиеся ошибки в error_log, как показано ниже. Как я могу решить эту проблему?

Благодарю.

журнал ошибок

[29-Nov-2015 12:01:14 UTC] PHP Warning:  getimagesize(http://hardal.com/wp-content/uploads/2015/11/glogo.png): failed to open stream: HTTP request failed!  in /home/hardal/public_html/wp-content/themes/hardal/header.php on line 36
[29-Nov-2015 12:01:14 UTC] PHP Warning:  getimagesize(http://hardal.com/wp-content/uploads/2015/11/glogo21.png): failed to open stream: HTTP request failed!  in /home/hardal/public_html/wp-content/themes/hardal/functions/theme-actions.php on line 38

theme-actions.php строка с 36 по 41

  <div class="row" id="copyright-note">
<?php if ($albay_options['albay_footer_logo'] != '') { ?>
    <?php list($width, $height, $type, $attr) = getimagesize($albay_options['albay_footer_logo']); ?>
    <div class="foot-logo">
        <a href="<?php echo home_url(); ?>" rel="nofollow"><img src="<?php echo $albay_options['albay_footer_logo']; ?>" alt="<?php bloginfo( 'name' ); ?>" <?php echo $attr; ?>></a>
    </div>

Строка header.php с 33 по 43

                <?php if ($albay_options['albay_logo'] != '') { ?>
                <?php if( is_front_page() || is_home() || is_404() ) { ?>
                        <h1 id="logo" class="image-logo">
                            <?php list($width, $height, $type, $attr) = getimagesize($albay_options['albay_logo']); ?>
                            <a href="<?php echo home_url(); ?>"><img src="<?php echo $albay_options['albay_logo']; ?>" alt="<?php bloginfo( 'name' ); ?>" <?php echo $attr; ?>></a>
                        </h1><!-- END h1-->
                <?php } else { ?>
                      <h2 id="logo" class="image-logo">
                            <?php list($width, $height, $type, $attr) = getimagesize($albay_options['albay_logo']); ?>
                            <a href="<?php echo home_url(); ?>"><img src="<?php echo $albay_options['albay_logo']; ?>" alt="<?php bloginfo( 'name' ); ?>" <?php echo $attr; ?>></a>
                        </h2><!-- END h2-->

1 ответ

Как я могу решить эту проблему?

Что ж, похоже, вам нужно сделать больше тестов, чтобы убедиться, в чем проблема, прежде чем приступить к ее решению.

error_log предоставил вам несколько подсказок, чтобы вы знали, что это getimagesize функция имела проблемы с HTTP request при обработке http://hardal.com/wp-content/uploads/2015/11/glogo.png и другой URL.

Из-за этого связано с HTTP request, чтобы выяснить, в чем именно заключается ошибка, вам может понадобиться $http_response_header переменная.

http://php.net/manual/en/reserved.variables.httpresponseheader.php

Массив $http_response_header аналогичен функции get_headers(). При использовании обертки HTTP, $http_response_header будет заполняться заголовками ответа HTTP. $http_response_header будет создан в локальной области видимости.

Обратите внимание, что эта переменная доступна только тогда, когда HTTP wrapper успешно подключен к HTTP-серверу, и этот сервер ответил. Если это не HTTP-сервер или соединение не установлено, $http_response_header будет пустым или не будет установлен.

Таким образом, для целей отладки (или поиска причины) вы можете создать такой код:

getimagesize('http://hardal.com/wp-content/uploads/2015/11/glogo.png');

if (empty($http_response_header)) {
    exit('Connection failed.');
}

// See if the response string contains `200`. works in `HTTP/1.1` at least
if (strpos($http_response_header[0], '200') === false) {
    exit('HTTP Error: ' . $http_response_header[0]);
}

Запустите его, это выведет более подробную информацию об ошибке. Затем:

  • Если он сказал "Ошибка подключения", проверьте ваш порт, связанные с брандмауэром.
  • Если там написано "HTTP Error: blablabla", проверьте настройки вашего целевого (hardal.com) HTTP-сервера.

Примечание: не забудьте удалить вышеуказанный отладочный код, прежде чем возвращаться к работе.

Другие вопросы по тегам