php разрешить короткие теги
Правильные теги для PHP файлов
Закрывающий тег, который, кстати, пишется так
Закрывающий тег не является обязательным. Тем не менее, закрывающий тег может использоваться когда заканчивается PHP код и начинается, например, HTML код.
Пары могут использоваться в одном файле несколько раз, отделяя PHP код от HTML кода.
Важная вещь, которую нужно знать про закрывающий тег ?>: он выбросит вас из PHP в HTML даже если он закомментирован с помощью //. Однако комментарий /* */ справляется — тег ?> теряет своё специальное значение. Помните об этой интересной особенности, поскольку при комментировании блоков кода, вы можете столкнуться с необычной ситуацией, когда ?> продолжит работу не смотря на то, что вы этого не ожидаете.
Если вы поместите какой-то PHP код между этих тегов, то почти наверняка веб-браузер просто ничего не отобразит с новой версией PHP.
Почему не работает код в
В современных версиях PHP поддержка коротких тегов по умолчанию отключена. Причина в появлении формата XML, взгляните на следующую строку:
Эта строка содержит теги PHP, хотя на самом деле это элемент XML разметки. Чтобы избежать такой двусмысленности, сокращённые теги отключены, но их поддержку можно снова включить!
Как включить поддержку сокращённых тегов в PHP
В файле php.ini имеется директива:
Больше не работают и
Отделение PHP и HTML кода
Все, что находится вне пары открывающегося и закрывающегося тегов, игнорируется интерпретатором PHP, у которого есть возможность обрабатывать файлы со смешанным содержимым. Это позволяет PHP-коду быть встроенным в документы HTML, к примеру, для создания шаблонов.
Это работает так, как и ожидается, потому что когда интерпретатор PHP встречает закрывающие теги ?>, он просто начинает выводить все что найдёт (за исключением сразу следующего символа перевода строки) пока не встретит другой открывающий тег за исключением случая с содержащимся внутри кода условным оператором, в котором интерпретатор определяет результат условия перед принятием решения что пропустить. Ознакомьтесь со следующим примером.
Продвинутое изолирование с использованием условий:
В этом примере PHP пропускает блоки, где условие не соблюдается. Даже несмотря на то, что они находятся вне пары открывающих/закрывающих тегов, PHP пропустит их в соответствии с условием, так как интерпретатор PHP будет перепрыгивать через блоки, содержащиеся внутри условия, которое не соблюдается.
При выводе больших блоков текста выход из режима синтаксического разбора PHP обычно более эффективен, чем отправка текста с помощью функций echo или print.
Выход из HTML также применяется к другим управляющим операторам:
При выполнении приведённого выше фрагмента кода, мы получаем следующий вывод:
Разделение инструкций
Как в C или Perl, PHP требует окончания инструкций точкой запятой в конце каждой инструкции. Закрывающий тег блока PHP-кода автоматически применяет точку с запятой; т.е. нет необходимости ставить точку с запятой в конце последней строки блока с PHP-кодом. Закрывающий тег блока «поглотит» немедленно следующий за ним переход на новую строку, если таковой будет обнаружен.
Замечание: закрывающий тег PHP-блока в конце файла не является обязательным, и в некоторых случаях его опускание довольно полезно, например, при использовании include или require, так, что нежелательные пробелы не останутся в конце файла и вы все еще сможете добавить http-заголовки после подключения к ответу сервера. Это также удобно при использовании буферизации вывода, где также нежелательно иметь пробелы в конце частей ответа, сгенерированного подключаемыми файлами.
Как включить короткие теги PHP?
у меня есть веб-приложение на сервере Linux, который начинается с
мне нужно было скопировать это приложение в среду windows, и все работает нормально, за исключением того, что оператор SQL отображается по-другому. Я не знаю, связано ли это со скриптом, начинающимся с вместо потому что я не знаю, откуда включить с PHP.ini поэтому я изменил его, чтобы
Я знаю, что эти 2 высказывания должно означать то же самое, но мне нужно проверить его с для того, чтобы убедиться, что приложение точно такое же. Таким образом, я могу исключить еще одну возможность.
18 ответов
и перезапустите сервер Apache.
Это можно сделать, включив short_open_tag на php.ini:
Если у вас нет доступа к PHP.ini вы можете попробовать включить их через .реврайт файл, но возможно, хостинговая компания отключила это, если вы находитесь на общем хостинге:
для людей, которые думают, что short_open_tags-плохая практика начиная с php 5.4 shorttag будет поддерживаться везде, независимо от настройки, поэтому нет причин не использовать их, если вы можете управлять настройками на сервере. Также сказано в этой ссылке:short_open_tag
это можно сделать, включив short_open_tag в php.ini:
1.Чтобы найти php.ini-файл, в строке комментария execute
вы получите что-то вроде этого,
см. 2-ю строку из вывода комментария.Файл будет находиться в указанном пути.
3.Перезагрузите сервер, выполните этот комментарий
чтобы установить короткие теги для открытия из сценария установки Vagrant на Ubuntu:
Я вижу, что все ответы выше частично верны только. На самом деле все приложения 21st Century PHP будут иметь FastCGI Process Manager(php-fpm), поэтому, как только вы добавили php-info() в свой тест.PHP-скрипт и проверил правильный путь для PHP.ini
важно: затем вы должны перезапустить процесс php-fpm, чтобы это могло работать!
а затем, наконец, перезагрузите сервер nginx/http
вам нужно включить short_open_tags.
Как просто, как это, выполните следующие действия:
Так, short_open_tag = On
в CentOS 6 (тоже протестировано на Centos 7) вы не можете установить short_open_tag в /etc/php.ini для php-fpm. У вас будет ошибка:
вы должны отредактировать config для своего сайта, который можно найти в /etc/php-fpm.д/ВСП.conf И напишите в конце файла:
Если вы редактируете свой php.ini-файл, не забудьте перезапустить службу (apache2 и т. д.) Для редактирования в php.ini вступит в силу
Как включить короткие теги PHP?
У меня есть веб-приложение на сервере Linux, которое начинается с
Мне нужно было скопировать это приложение в среду Windows, и все работает нормально, за исключением того, что SQL-оператор обрабатывается по-разному. Я не знаю, связано ли это с скриптом, начинающимся с вместо потому что я не знаю, откуда включить из PHP.ini поэтому я изменил его на
Я знаю, что эти два утверждения должны означать одно и то же, но мне нужно проверить его с помощью чтобы приложение было точно таким же. Таким образом, я могу устранить еще одну возможность.
И перезапустите сервер Apache.
Это можно сделать, включив short_open_tag в php.ini :
Если у вас нет доступа к php.ini, вы можете попытаться включить их через файл .htaccess, но возможно, что хостинговая компания отключила это, если вы находитесь на общедоступном хостинге:
Это можно сделать, включив short_open_tag в php.ini:
1. Найти файл php.ini, выполнить строку комментария
вы получите что-то вроде этого,
См. 2-я строка из вывода комментария. Файл будет указан по указанному пути.
3. Перезагрузите сервер, выполните этот комментарий.
Чтобы установить короткие теги для открытия с помощью скрипта установки Vagrant на Ubuntu:
Я вижу, что все приведенные выше ответы частично верны. На самом деле все приложения PHP 21-го века будут иметь FastCGI Process Manager (php-fpm), поэтому, как только вы добавите php-info () в свой сценарий test.php и проверите правильный путь для php.ini
ВАЖНО: тогда вы должны перезапустить процесс php-fpm, чтобы он мог работать!
и затем, наконец, перезапустите свой nginx / http-сервер
вам нужно включить short_open_tags.
Как простой, выполните следующие действия:
поэтому short_open_tag = On
В CentOS 6 (также тестируется на Centos 7) вы не можете установить short_open_tag в /etc/php.ini для php-fpm. У вас будет ошибка:
Вы должны отредактировать конфиг для своего сайта, который можно найти в файле /etc/php-fpm.d/www.conf. И напишите в конце файла:
если вы отредактируете файл php.ini, не забудьте перезапустить службу (apache2 и т. д.), чтобы изменения в php.ini вступили в силу
если вы используете xampp, вы заметите, что файл php.ini дважды упоминал short_open_tag. Включите второй для short_open_tag = Вкл. Первый из них прокомментирован, и у вас может возникнуть соблазн раскомментировать и отредактировать его, но он перегружен вторым short_open_tag
Если вы используете xampp в окнах, пожалуйста, сделайте следующее
Найти short_open_tag с помощью утилиты ctrl + f
Вы найдете ;short_open_tag
добровольно удалите точку с запятой (;) из строки.
и сохраните его как short_open_tag = on
Наконец, перезапустите сервер Apache
Чтобы включить short_open_tag для определенного домена с php-fpm, вы должны изменить:
Где xxxxx – номер сокета домена.
И добавьте: php_value [short_open_tag] = Вкл.
Как включить короткие теги PHP?
У меня есть веб-приложение на сервере Linux, которое начинается с
Мне нужно было скопировать это приложение в среду Windows, и все работает нормально, за исключением того, что SQL-оператор обрабатывается по-разному. Я не знаю, связано ли это с скриптом, начинающимся с вместо потому что я не знаю, откуда включить из PHP.ini поэтому я изменил его на
Я знаю, что эти два утверждения должны означать одно и то же, но мне нужно проверить его с помощью чтобы приложение было точно таким же. Таким образом, я могу устранить еще одну возможность.
И перезапустите сервер Apache.
Это можно сделать, включив short_open_tag в php.ini :
Если у вас нет доступа к php.ini, вы можете попытаться включить их через файл .htaccess, но возможно, что хостинговая компания отключила это, если вы находитесь на общедоступном хостинге:
Это можно сделать, включив short_open_tag в php.ini:
1. Найти файл php.ini, выполнить строку комментария
вы получите что-то вроде этого,
См. 2-я строка из вывода комментария. Файл будет указан по указанному пути.
3. Перезагрузите сервер, выполните этот комментарий.
Чтобы установить короткие теги для открытия с помощью скрипта установки Vagrant на Ubuntu:
Я вижу, что все приведенные выше ответы частично верны. На самом деле все приложения PHP 21-го века будут иметь FastCGI Process Manager (php-fpm), поэтому, как только вы добавите php-info () в свой сценарий test.php и проверите правильный путь для php.ini
ВАЖНО: тогда вы должны перезапустить процесс php-fpm, чтобы он мог работать!
и затем, наконец, перезапустите свой nginx / http-сервер
вам нужно включить short_open_tags.
Как простой, выполните следующие действия:
поэтому short_open_tag = On
В CentOS 6 (также тестируется на Centos 7) вы не можете установить short_open_tag в /etc/php.ini для php-fpm. У вас будет ошибка:
Вы должны отредактировать конфиг для своего сайта, который можно найти в файле /etc/php-fpm.d/www.conf. И напишите в конце файла:
если вы отредактируете файл php.ini, не забудьте перезапустить службу (apache2 и т. д.), чтобы изменения в php.ini вступили в силу
если вы используете xampp, вы заметите, что файл php.ini дважды упоминал short_open_tag. Включите второй для short_open_tag = Вкл. Первый из них прокомментирован, и у вас может возникнуть соблазн раскомментировать и отредактировать его, но он перегружен вторым short_open_tag
Если вы используете xampp в окнах, пожалуйста, сделайте следующее
Найти short_open_tag с помощью утилиты ctrl + f
Вы найдете ;short_open_tag
добровольно удалите точку с запятой (;) из строки.
и сохраните его как short_open_tag = on
Наконец, перезапустите сервер Apache
Чтобы включить short_open_tag для определенного домена с php-fpm, вы должны изменить:
Где xxxxx – номер сокета домена.
И добавьте: php_value [short_open_tag] = Вкл.
Php разрешить короткие теги
Сегодня меня спросили, что я думаю по поводу использования коротких тегов.
Их осталось на данный момент в PHP 7.4 два вида:
Если с всё ясно, тег доступен всегда и удобен при использовании в шаблонах, то с не всё так просто.
В PHP 7.4 его хотели убрать и почти убрали после положительного голосования за RFC. Но в итоге сначала предложили сделать это по-другому, а потом и вовсе не делать.
В результате в PHP 7.4 теги работают как и ранее. В PHP 8 тоже (но не факт, что так будет в релизе).
Комментарии RSS по email OK
Проще говоря, лучше не используйте Рома 10 июня 2020 г., 12:37:46
Я в принцие не погу представить себе веловека, который будет всерьёз обсуждать вопрос короткого тега для нового кода.
Отдельным пунктом должно быть «если у вас огромная пахучая куча легаси, использующая короткий тег, то на время можно расслабиться».
Но понять людей, которые всерёз ставят такой вопрос в отношении нового кода я не могу.
а почему бы не включить короткие теги в целом по умолчанию?
Я некоторое время назад это заметил, убедился по коду что он и правда не учитывается и решил что вы считаете 11 июня 2020 г., 11:20:51
за короткий тег 12 июня 2020 г., 10:38:43
Serge, вполне можно было бы тогда использовать короткие всегда.
Andrey, да, это похоже на баг. Создайте issue, будем разбираться.
Не знаю как сейчас, но раньше phpStorm комментировал куски кода с с короткими тегами криво, в результате получал рендеринг кусков кода) Особенно когда правишь баги на проде, под утро, на след день видишь на проекте эти скобки в html. После это я совсем отказался от них и всем советовал.