getimagesize()无法打开流:HTTP请求失败!错误

时间:2015-11-30 09:43:01

标签: php http request getimagesize

我在博客中使用了wordpress,但我在error_log中看到了重复的错误,如下所示。我该如何解决这个问题?

感谢。

error_log中

  <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>

theme-actions.php第36至41行

                <?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-->

header.php第33至43行

$("#jqxgrid").jqxGrid({
 widht:"100%",
 showfilterrow:true,
 filterable:true,
 autorowheight:true,
 autoheight:true,
 altrows:true
 columns: [//some columns here]
}

1 个答案:

答案 0 :(得分:1)

  

我该如何解决这个问题?

好吧,在开始解决问题之前,您似乎需要对其进行更多测试以确定问题所在。

error_log为您提供了一些线索,让您知道getimagesize函数在处理HTTP request和其他网址时遇到http://hardal.com/wp-content/uploads/2015/11/glogo.png问题。

由于这与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服务器的设置。

注意:请记住在恢复生产之前删除上述调试用途的代码。