【问题标题】:PHP 5.6 parse error using Nginx and FastCGI [duplicate]使用 Nginx 和 FastCGI 的 PHP 5.6 解析错误 [重复]
【发布时间】:2015-12-29 12:02:14
【问题描述】:

我正在使用 NGINX 和 PHP 5.6,升级后似乎无法调试此错误。我的错误日志如下:

2015/12/29 11:57:56 [错误] 928#0:20485 FastCGI 在标准错误中发送:“PHP 消息:PHP 解析错误:语法错误,/var/www/ 中的意外 '}' magento/htdocs/pub/become/wp-content/themes/become/index.php 在第 81 行”,同时从上游读取响应标头,客户端:83.110.226.45,服务器:sss.uat。..com,请求:“GET /become/ 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 语法更改为 &lt;?if($condition):?&gt;...&lt;?else:?&gt;...&lt;?endif;?&gt; 在此处阅读更多内容 php.net/manual/en/control-structures.alternative-syntax.php
  • 哇,伙计,如果我是对的,我会发帖作为答案,这样 Andrii 就不会浪费我来之不易的互联网积分

标签: php nginx php-5.6


【解决方案1】:

删除所有多余的打开/关闭标签:

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

还要确保不要使用短打开标记&lt;?,这不是一个好的做法,并且可能在 PHP 设置中被禁用,因此应通过 php.ini 文件中的short_open_tag 指令打开。

http://php.net/manual/en/language.basic-syntax.phptags.php

【讨论】:

  • 我没有这个选项,因为这个程序员构建的其他文件在条件句之间有很大的 HTML 间隙。
  • 问题是由于 short_open_tag,我们交换了服务器并且主机已禁用它们,现在我们的整个应用程序无法在我们的 UAT 环境中运行。耻辱。我个人喜欢短标签
  • 我也喜欢它,但它有时会引起麻烦,就像在这种情况下:)
【解决方案2】:

检查您是否启用了 short_open_tags。看起来第一个 PHP 部分是} else {。我认为它可能在 PHP 5.6 中被删除或至少被弃用。

你能把phpinfo上传到某个地方吗?

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2013-12-24
    • 2015-08-23
    • 2015-11-05
    • 2015-04-08
    • 2011-03-12
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多