Как включить короткие теги PHP?
У меня есть веб-приложение на сервере Linux, которое начинается с <?
Мне нужно было скопировать это приложение в среду Windows, и все работает нормально, за исключением того, что оператор SQL отображается по-другому. Я не знаю, имеет ли это отношение к сценарию, начинающемуся с <?php
вместо <?
потому что я не знаю, откуда включить <?
от PHP.ini
поэтому я изменил его на <?php
Я знаю, что эти 2 утверждения должны означать то же самое, но мне нужно проверить это с <?
чтобы убедиться, что приложение точно так же. Таким образом, я могу исключить еще одну возможность.
Спасибо
21 ответ
Это можно сделать, включив short_open_tag в php.ini:
short_open_tag = on
Если у вас нет доступа к php.ini, вы можете попытаться включить их через файл .htaccess, но возможно, что хостинговая компания отключила это, если вы используете общий хостинг:
php_value short_open_tag 1
Для людей, которые думают, что short_open_tags - плохая практика с php 5.4, <?= ... ?>
Shorttag будет поддерживаться везде, независимо от настроек, поэтому нет причин не использовать их, если вы можете контролировать настройки на сервере. Также сказано в этой ссылке: short_open_tag
Это можно сделать, включив short_open_tag в php.ini:
1. Чтобы найти файл php.ini, в строке комментария выполните
php --ini
вы получите что-то подобное,
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/json.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/zip.ini
Смотрите вторую строку из вывода комментария. Файл будет по указанному пути.
2. Откройте файл php.ini и найдите short_open_tag
, По умолчанию это в off
измените это на on
,
3. Перезагрузите сервер, выполните этот комментарий
service httpd restart
Спасибо
Чтобы настроить короткие теги для открытия из сценария установки Vagrant в Ubuntu:
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini
Я вижу, что все ответы выше являются только частично правильными. На самом деле все приложения 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
Так же просто, как это, выполните следующие действия:
- перейти к файлу php.ini
- найдите "short_open_tag" и включите его,
- перезагрузите сервер
Итак, short_open_tag = On
В CentOS 6(также протестирован на Centos 7) вы не можете установить short_open_tag в /etc/php.ini для php-fpm. Вы будете иметь ошибку:
ERROR: [/etc/php.ini:159] unknown entry 'short_open_tag'
ERROR: Unable to include /etc/php.ini from /etc/php-fpm.conf at line 159
ERROR: failed to load configuration file '/etc/php-fpm.conf'
ERROR: FPM initialization failed
Вы должны отредактировать конфигурацию для своего сайта, которую можно найти в /etc/php-fpm.d/www.conf и написать в конце файла:
php_value[short_open_tag] = On
Если вы используете Ubuntu
с Apache+php5
, то на текущих версиях есть 2 места, где вам нужно поменять на short_open_tag = On
/etc/php5/apache2/php.ini
- это для страниц, загружаемых через ваш веб-сервер (Apache)/etc/php5/cli/php.ini
- эта конфигурация используется, когда вы запускаете ваши php файлы из командной строки, например:php yourscript.php
- это выполняется вручную или cronjob php файлы прямо на сервере.
Для пользователей Wamp Server есть более простой способ: вы можете включить эту настройку, просто (слева) один раз кликнув по значку WampServer, выбрав PHP -> PHP settings -> short open tag. Подождите секунду, затем WampServer автоматически перезапустит ваш PHP, а также его веб-сервис.
Если вы редактируете свой файл php.ini, не забудьте перезапустить службу (apache2 и т. д.), чтобы изменения в php.ini вступили в силу
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
;short_open_tag=Off <--Comment this out
; XAMPP for Linux is currently old fashioned
short_open_tag = On <--Uncomment this
Вы можете выполнить следующие шаги:
1-> Перейти
php.ini
файл внутри
/etc/php/7.3/apache2
или внутри твоего
PHP version
а также
2-> Найти
short_open_tag
и установите его на
On
и удаление
;
с начала.
short_open_tag = On
3-> Перезагрузите сервер
sudo service apache2 restart
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/apache2/php.ini
Это работает на php7.2 в Ubuntu 16, тот же ответ, что и выше, Брэдли Флуд, хотя каталог, в котором хранится файл конфигурации, изменился.
Также вы можете изменить версию в строке php, чтобы она соответствовала вашей текущей установленной версии.
Если вы используете xampp в Windows, пожалуйста, сделайте следующее
- Откройте панель управления XAMPP.
- Нажмите на кнопку CONFIG.
- Перейти к PHP (php.ini) вариант.
Найти short_open_tag используя утилиту ctrl+f
Вы найдете ;short_open_tag
удалите точку с запятой (;) из строки.
и сохранить его как short_open_tag = on
Наконец, перезагрузите сервер Apache
При использовании xampp вы заметите, что файл php.ini дважды упомянул short_open_tag . Включите второй для short_open_tag = On . Первый закомментирован, и вы можете испытать искушение раскомментировать и отредактировать его, но он перезаписан вторым short_open_tag
Для докера добавьте этот шаг в Dockerfile
ARG phpIniPath=/path/to/your/php.ini
RUN sed -i -e 's/^short_open_tag\s*=.*/short_open_tag = On/' $phpIniPath
short_open_tag = On
в php.ini
И перезапустите свой сервер Apache.
Чтобы включить short_open_tag для определенного домена с php-fpm, вы должны отредактировать:
/etc/php5/fpm/pool.d/xxxxxxxxxx.conf
Где xxxxx - номер сокета домена.
И добавьте: php_value[short_open_tag] = вкл
Я изменил значение short_open_tag на "Вкл" на моем экземпляре aws centos 7 и php7(PHP 7.0.33 (cli) (построено: 6 декабря 2018 22:30:44) ( NTS)), но оно не отражает информационную страницу php и код. Поэтому я ссылаюсь на документы и нахожу решение по моему делу. Добавьте дополнительную строку после short_open_tag как asp_tags = On, после этого перезапустите Apache. Он работает над кодом, и я правильно вывожу вывод.
файл php.ini
engine = On ; This directive determines whether or not PHP will recognize code between ; <? and ?> tags as PHP source which should be processed as such. It is ; generally recommended that <?php and ?> should be used and that this feature ; should be disabled, as enabling it may result in issues when generating XML ; documents, however this remains supported for backward compatibility reasons. ; Note that this directive does not control the <?= shorthand tag, which can be ; used regardless of this directive. ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/short-open-tag short_open_tag = On ; Allow ASP-style <% %> tags ; http://php.net/asp-tags asp_tags = On
Установить asp_tags = On
а также short_open_tag = On
в обоих файлах \apache\Apache2.2.21\bin\php.ini
а также \bin\php\php5.3.8\php.ini
и затем перезапустите сервер apache.