为啥我在本地环境(而在原始服务器上没有)上的 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 项目上得到“意外的令牌导入”,而在另一个项目上却没有?