2015-12-29 1 views
0

J'utilise NGINX et PHP 5.6 et ne peut pas sembler déboguer cette erreur après une mise à niveau. Mon journal d'erreur se lit comme suit:PHP 5.6 erreur d'analyse en utilisant Nginx et 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"

Et voici mon PHP

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

PHP 5.6 docs et quelques recherches ne dit pas pourquoi cette requête est pas obsolète.

+0

pouvez-vous poster plus de votre php? il doit y avoir quelque chose d'autre qui se passe .. – Clay

+0

Vous pouvez changer la syntaxe if pour être comme ceci '' ... '' ... '' lire la suite ici http: // php.net/manual/fr/control-structures.alternative-syntax.php – Clay

+0

aww man, si j'ai raison je vais poster comme une réponse si Andrii ne gank mes points durement gagnés internet – Clay

Répondre

1

Supprimer tous les excès balises d'ouverture/fermeture:

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

Mise à jour: Essayez de changer comme ceci:

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

Assurez-vous également que vous ne utiliser la balise courte ouverte <?, ce qui n'est pas une bonne pratique et est probablement désactivée en PHP ettings, devrait donc être activé par la directive short_open_tag dans votre fichier php.ini.

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

+0

Je n'ai pas cette option parce que d'autres fichiers que ce programmeur a construit ont de grands espaces HTML entre les conditions. – TheBlackBenzKid

+0

Le problème était dû à court_open_tag, nous avons échangé des serveurs et l'hôte les a désactivés et maintenant notre application entière ne fonctionne pas sur notre environnement UAT. La honte. J'aime les petites balises personnellement – TheBlackBenzKid

+0

J'aime aussi ça, mais ça cause parfois des problèmes, comme dans ce cas :) – Andrii

0

Vérifiez que vous avez activé short_open_tags. On dirait que la première partie PHP est } else {. Je pense qu'il a peut-être été supprimé en PHP 5.6 ou au moins déprécié.

Pouvez-vous télécharger phpinfo quelque part?