2015-12-29 3 views
0

Я использую NGINX и PHP 5.6 и не могу отлаживать эту ошибку после обновления. Мой журнал ошибок гласит:PHP 5.6 ошибка синтаксического анализа с использованием Nginx и FastCGI

2015/12/29 11:57:56 [error] 928#0: 20485 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '}' in /var/www/magento/htdocs/pub/become/wp-content/themes/become/index.php on line 81" while reading response header from upstream, client: 83.110.226.45, server: sss.uat...com, request: "GET /become/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/sss.uat.*..com.sock:", host: 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 документы и некоторые из поиска не говорит, почему этот запрос не устарел.

+0

Можете ли вы разместить больше своего php? должно произойти что-то еще. – Clay

+0

Вы можете изменить синтаксис if таким образом: '' ... '' ... '' подробнее здесь http: // php.net/manual/en/control-structures.alternative-syntax.php – Clay

+0

все мужчины, если я прав, я отправлю в качестве ответа, чтобы Андрей не хватал мои с трудом заработанные интернет-очки – Clay

ответ

1

Удалить все лишние открыть/закрыть теги:

<?php 
if ($sss_article_featuretitle=="") { 
    echo mb_strimwidth(the_title(), 0, 40, '...'); 
} else { 
    echo $sss_article_featuretitle; 
} 
?> 

Update: Попробуйте изменить это следующим образом:

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 , поэтому вы должны включить директиву short_open_tag в файл php.ini.

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

+0

У меня нет этот вариант, потому что другие файлы, созданные этим программистом, имеют большие разрывы HTML между условными выражениями. – TheBlackBenzKid

+0

Проблема была вызвана short_open_tag, мы обменяли серверы, и хост отключил их, и теперь наше приложение не работает в нашей среде UAT. Позор. Мне нравятся короткие теги лично – TheBlackBenzKid

+0

Мне тоже нравится, но иногда это вызывает проблемы, как в этом случае :) – Andrii

0

Убедитесь, что у вас есть short_open_tags включен. Похоже, что первая часть PHP - } else {. Я думаю, что он был удален в PHP 5.6 или, по крайней мере, устарел.

Вы можете загрузить phpinfo где-нибудь?