web-dev-qa-db-ja.com

PHP short_open_tagが有効にならない(CentOS 6)

Apache2をセットアップしていますPHP 5.3.3サーバーはCentOS 6で実行されています。私のWebアプリケーションは短いタグ<?<?=を使用しています。短いタグを有効にできないようです。 phpinfo()を実行すると、short_open_tag = offが表示されますが、/etc/php.iniにはshort_open_tag = onがあります(はい、サーバーを再起動しました)。

また、ページの先頭で<?php ini_set('short_open_tag','1'); ?>を使用してみましたが、それでも短いタグのコードを解析しません。

私が考えることができる唯一のことは、代わりに使用されている、またはphp.iniのファイルをオーバーライドしている別の/etc/php.iniファイルがどこかにあるということです。

何かアドバイス?

3
Brack

かなりデフォルトのCentOS6.3システムがあり、PHP 5.3.3が手元にあり、期待どおりに機能します。/etc/php.iniのshort_open_tagsの値を変更して、httpdサービスを再起動するだけで機能します。

PHPは/etc/php.d内のファイルも読み取るため、ファイルの1つでオーバーライドされていないことを確認してください。

他のphp.iniファイルを確認したい場合は

find / -name php.ini 

もう少し詳しく説明しますが、short_open_tagの値は.htaccessファイルでも設定できます。

php_value short_open_tag On
2
user9517

ほとんどの場合、eAcceleratorまたは同様のものが有効になっています。プリコンパイルされたページは処理されないため、eAcceleratorキャッシュをクリアするか、(醜い)eAcceleratorをアンインストールし、Apacheを再起動し、eAcceleratorを再インストールして、Apacheを再起動します。

2
John Doe

それも確認してください

  • スクリプトに向かう途中の.htaccessファイルにshort_open_tagディレクティブが含まれていないため、競合する可能性があります(私の場合、上位レベルのディレクトリにあるこのファイルが問題の原因でした)
1
peterson

上記のすべての答えは部分的にのみ正しいことがわかります。実際には、21世紀のすべてのPHPアプリにはFastCGIプロセスマネージャー(php-fpm)があるため、php-info()をtest.phpスクリプトに追加して、phpの正しいパスを確認すると、 ini

Go to php.ini and set short_open_tag = On

重要:これが機能するように、php-fpmプロセスを再起動する必要があります!

Sudo service php-fpm restart

そして最後にnginx/httpサーバーを再起動します

Sudo service nginx restart
0
Eddy Ferreira

centos6では、/ etc/php.iniを配置する必要があります。ファイルで複数回定義されていないことを確認してください。

デフォルトでは、「クイックリファレンス」セクションにタグの説明があります。

; short_open_tag
;   Default Value: On
;   Development Value: Off
;   Production Value: Off

後で「言語オプション」セクションで設定されるため、タグを追加しないでください(設定が上書きされます)。

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
short_open_tag = Off
0
loic.jaouen