Назад | Перейти на главную страницу

PHP short_open_tag не включается (CentOS 6)

Я настраиваю сервер Apache2, PHP 5.3.3, работающий на CentOS 6. Мое веб-приложение использует короткие теги <? и <?=. Кажется, я не могу включить короткие теги. Когда я бегу phpinfo() я вижу short_open_tag = offоднако в /etc/php.ini У меня есть это: short_open_tag = on (и да, я перезапустил сервер).

Я также пробовал использовать <?php ini_set('short_open_tag','1'); ?> в начале страницы, и он по-прежнему не анализирует код в коротких тегах.

Единственное, о чем я могу думать, это еще один php.ini файл где-нибудь, который используется вместо или заменяет файл в /etc/php.ini.

Любой совет?

Скорее всего, у вас включен eAccelerator или что-то подобное. Предварительно скомпилированные страницы не обрабатываются, поэтому просто очистите кеш eAccelerator или (уродливо) удалите eAccelerator, перезапустите Apache, переустановите eAccelerator, перезапустите Apache ..

У меня есть система CentOS 6.3 по умолчанию с PHP 5.3.3, и она работает, как ожидалось. Изменение значения short_open_tags в /etc/php.ini и перезапуск службы httpd просто работает.

PHP также читает файлы в /etc/php.d поэтому убедитесь, что он не отменен в одном из них.

Если вы хотите проверить наличие других файлов php.ini, тогда

find / -name php.ini 

Немного больше информации, значение short_open_tag также может быть установлено в файле .htaccess.

php_value short_open_tag On

Убедитесь также, что

  • нет .htaccess файл на пути к вашему скрипту содержит short_open_tag директива, которая может противоречить (в моем случае этот файл в каталоге верхнего уровня был источником проблемы)

Я вижу, что все ответы выше верны только частично. На самом деле все PHP-приложения 21-го века будут иметь FastCGI Process Manager (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

на 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