我使用的是NGINX和PHP 5.6,升级后似乎无法调试此错误。我的错误日志显示:
2015/12/29 11:57:56[error]928#0:20485 FastCGI在stderr中发送:"PHP消息:PHP分析错误:语法错误,第81行/var/www/magento/htdocs/pub/dener/wp-content/themes/dener/index.PHP中出现意外的‘}’",同时从上游读取响应标头,客户端:83.110.226.45,服务器:sss.uat...com,请求:"GET/bein/HTTP/1.1",上游:"fastcgi://unix:/var/run/php-fpm/sss.uat.*.com.sock:",主机:sss.uat.***..com"
这是我的PHP
<?
if($sss_article_featuretitle==""){?>
<?php echo mb_strimwidth(the_title(), 0, 40, '...'); ?>
<?php } else { //line 81
echo $sss_article_featuretitle;
}
?>
PHP 5.6文档和一些搜索并没有说明为什么这个查询没有过时。
删除所有多余的打开/关闭标签:
<?php
if ($sss_article_featuretitle=="") {
echo mb_strimwidth(the_title(), 0, 40, '...');
} else {
echo $sss_article_featuretitle;
}
?>
更新:试着这样改变:
http://php.net/manual/en/language.basic-syntax.phpmode.php
<?php if ($sss_article_featuretitle==""): ?>
<?php echo mb_strimwidth(the_title(), 0, 40, '...'); ?>
<?php else: ?>
<?php echo $sss_article_featuretitle; ?>
<?php endif; ?>
此外,请确保不要使用短的打开标记<?
,这不是一个好的做法,并且可能在PHP设置中被禁用,因此应该由PHP.ini文件中的short_open_tag
指令打开。
http://php.net/manual/en/language.basic-syntax.phptags.php
检查是否已启用short_open_tags。看起来PHP的第一部分是} else {
。我认为它可能在PHP 5.6中被删除了,或者至少被弃用了。
你能把phpinfo上传到什么地方吗?