Я настраиваю сервер 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