【问题标题】:Creating XML file gives internal server error创建 XML 文件会导致内部服务器错误
【发布时间】:2014-05-21 17:12:37
【问题描述】:

我正在使用 wordpress 扩展来创建 XML 文件输出。然而,只有(非常小)部分输出 si 正确生成。如果我尝试从另一个站点访问该 XML(我需要 XML 和该站点连接在一起),我会收到来自站点的 500 内部服务器错误响应。这是错误日志的一部分:

www.auto-flex.eu [Wed May 21 18:58:35.078213 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fopen(/nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-content/plugins/ankona-fields-polia/polia.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3879, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 18:58:35.078467 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fread() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3882, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 18:58:35.078590 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3885, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 18:58:35.379629 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fopen(/nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-content/plugins/ankona-fields-polia/polia.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3879, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 18:58:35.379744 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fread() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3882, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 18:58:35.379803 2014] [-:error] [pid 9298] [client 92.240.253.180:54919] PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3885, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.025588 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fopen(/nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-content/plugins/ankona-fields-polia/polia.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3879, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.025663 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fread() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3882, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.025708 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3885, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.138559 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fopen(/nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-content/plugins/ankona-fields-polia/polia.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: No such file or directory in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3879, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.138630 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fread() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3882, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php
www.auto-flex.eu [Wed May 21 19:00:38.138672 2014] [-:error] [pid 9364] [client 92.240.253.180:59625] PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-includes/functions.php on line 3885, referer http://www.auto-flex.eu/wp-admin/admin.php?page=heureka-feed/feed.php

我知道这些只是 PHP 警告而不是错误,但我认为这就是插件不起作用的原因。我相信我的 htaccess 文件只有一些问题。现在它只是基本的 WP htaccess 文件,它看起来像这样:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

functions.php 中的代码:

function get_file_data( $file, $default_headers, $context = '' ) {
    $fp = fopen( $file, 'r' );
    $file_data = fread( $fp, 8192 );
    fclose( $fp );
    $file_data = str_replace( "\r", "\n", $file_data );
    if ( $context && $extra_headers = apply_filters( "extra_{$context}_headers", array() ) ) {
        $extra_headers = array_combine( $extra_headers, $extra_headers ); // keys equal values
        $all_headers = array_merge( $extra_headers, (array) $default_headers );
    } else {
        $all_headers = $default_headers;
    }

    foreach ( $all_headers as $field => $regex ) {
        if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) . ':(.*)$/mi', $file_data, $match ) && $match[1] )
            $all_headers[ $field ] = _cleanup_header_comment( $match[1] );
        else
            $all_headers[ $field ] = '';
    }

    return $all_headers;
}

对此有何建议?

谢谢转发。

【问题讨论】:

  • 你能从functions.php的第3879行给出一些代码吗?
  • 我已将其添加到我的帖子中,但它只是 WP 附带的通用 functions.php 文件,所以我认为问题不应该存在。我相信它与 htaccess 标头有关。
  • fopen 不使用 htaccess,因为它使用本地路径。能否手动检查一下路径结构是否正确,文件是否存在?
  • 是的,两个文件都存在
  • 然而,应该显示 xml 提要的站点有时会像我写的那样显示其中的一部分,但有时也会给出代理错误,说“代理服务器收到来自上游服务器的无效响应。代理服务器无法处理请求GET /index.php。原因:从远程服务器读取错误”

标签: php xml wordpress .htaccess


【解决方案1】:

您收到错误是因为您尝试打开的文件 fopen() 不存在 - 根据它尝试打开的日志 /nfsmnt/hosting1_2/0/3/031ab609-b23c-40f3-8d1b-6700b9221820/auto-flex.eu/web/wp-content/plugins/ankona-fields-polia/polia.php

fread()fclose() 的下一个错误是因为 fopen() 返回 false 而不是文件句柄。

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 2014-12-14
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2013-07-14
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多