为啥我在本地环境(而在原始服务器上没有)上的 Wordpress 博客文章(仅)上收到错误消息

Posted

技术标签:

【中文标题】为啥我在本地环境(而在原始服务器上没有)上的 Wordpress 博客文章(仅)上收到错误消息【英文标题】:Why do I get an error message on Wordpress blog posts (only) on my local environment (and on the original server I don't)为什么我在本地环境(而在原始服务器上没有)上的 Wordpress 博客文章(仅)上收到错误消息 【发布时间】:2015-07-06 22:40:32 【问题描述】:

我将所有 WP 文件从服务器复制到本地 WAMP 作为开发环境。 除了查看博客文章外,一切都很顺利。

我得到了所有标题/类别/post-content/ect'的良好输出 - 但在博客内容之前有一个奇怪的输出:

http://i.stack.imgur.com/JTKJ5.png

content.php 第 68 行是代码中的这一部分:__( ),

“the_content”函数后一行:

<div class="post-bottom">
    <div class="post-text-container">
        <?php
            /* translators: %s: Name of current post*/
            $postURL = get_permalink();
            $commentsURL = get_comments_link();
            the_content( sprintf(
                __(  ),
                the_title( '<span class="screen-reader-text">', '</span>', false )
            ) );
            if ( !is_single() ) :
                    echo "<div class=\"read-more\"><a href=\"$postURL\">Continue reading...</a> | <a href=\"$commentsURL\">Full Comments</a></div>";
                endif;
        ?>
    </div>
</div>

这可能是什么原因?

编辑:在将内容处理到本地服务器时,我唯一改变的是:

1 - 我将数据库复制到本地 phpmyadmin 并在选项表中将所有 http://www.example.com 更改为 http://localhost/example

2 - 我完全删除了我的 .htaccess 文件(wordpress 自己生成了一个新文件)

这是服务器上的外观:

# 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

这就是我在本地拥有的:

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

# END WordPress

3- 我在 WAMP 上启用了“rewrite_modle”,因为默认情况下它是禁用的。

【问题讨论】:

如果你把'' 像:__('') 会发生什么? (在您的本地服务器上) 警告与您的 htaccess 文件无关(据我所知)。这是一个 PHP 问题 - 可能是 php.ini 中的版本或特定设置? @OfirBaruch Toda!这行得通。所以这是因为与php.ini 的不同。我通常不玩服务器,所以我不知道如何检查版本和配置。 我可以把它写成答案,你会批准吗? (我也会告诉你下一次的原因;)) @OfirBaruch yalla :D 【参考方案1】:

警告与代码的以下部分有关:__( )

在 WP 中__ 实际上是一个用于翻译目的的函数。

简单看一下in the manual,可以看出__()的函数用法是:

<?php $translated_text = __( $text, $domain ); ?>

并且$text 参数是必需的。

$text (string) (required) 要翻译的文本。默认值:无 $domain

(字符串)(可选)检索翻译文本的域。默认: '默认'

在您的代码中,您没有向该函数发送任何参数,因此您会收到合法警告。老实说,我不知道为什么一开始就没有争论。此外,您的远程服务器也应该显示该警告。如果它没有 - 或者代码不同,或者您在服务器上的某处(php.ini / wp-config.php)有error_reporting(0)

一个简单的解决方案就是添加一个空字符串作为参数。

【讨论】:

所有文件都被复制完全相同 - 所以我猜这是 php.ini 中的东西你建议在 php.ini 中解决这个问题以应对未来的这种情况吗? 具有低级别或没有error_reporting 会使您对可能的错误或错误视而不见(例如有一个空白页而不是可以帮助您定位错误的错误)。但是,由于您有本地版本,因此最好保留该设置。您不希望您的访问者看到错误。请记住在上传到生产环境之前测试本地环境中的每一个更改。【参考方案2】:

试着把它放在你的 wp-config.php 中,这并不能解决问题,但这基本上是你的服务器和本地之间的区别。

error_reporting(0);

这是一个警告,你可以取消它,它不是错误。

要解决此问题,您需要将字符串传递给__() 函数,因为它需要传递一个字符串。在这里阅读更多:https://codex.wordpress.org/Function_Reference/_2

【讨论】:

您不想解决导致警告的问题而不是忽略它吗? 问题是“为什么我在本地而不是服务器上收到错误消息”,所以我给他一个理由来说明为什么会这样。是的,解决问题更好,但您可以选择忽略它。 我更喜欢解决这个问题。我认为这是因为 .htaccess 文件我认为我正在编辑我的帖子并添加我在 .htaccess 文件中的内容以防万一

以上是关于为啥我在本地环境(而在原始服务器上没有)上的 Wordpress 博客文章(仅)上收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章

当表单在本地服务器上正常工作时,为啥表单中的数据没有发布到主机服务器上的 PHP 文件?

为啥我在一个 webpack 项目上得到“意外的令牌导入”,而在另一个项目上却没有?

为啥 count(*) 查询在某些表上很慢,而在其他表上却没有?

为啥本地连接不上数据库而远程可以.

为啥我在服务器上没有访问权限?

为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?