Как включить короткие теги PHP?

277

У меня есть веб-приложение на сервере Linux, которое начинается с <?

Мне нужно было скопировать это приложение в среду Windows, и все работает нормально, за исключением того, что оператор SQL обрабатывается по-разному. Я не знаю, связано ли это с script, начиная с <?php вместо <?, потому что я не знаю, откуда включить <? из PHP.ini, поэтому я изменил его на <?php

Я знаю, что эти два утверждения должны означать одно и то же, но мне нужно проверить его с помощью <?, чтобы убедиться, что приложение точно такое же. Таким образом, я могу устранить еще одну возможность.

Спасибо

Теги:
tags
php-shorttags

18 ответов

489
Лучший ответ

Set

short_open_tag=On

в php.ini

И перезагрузите сервер Apache.

  • 48
    Если PHP работает как модуль Apache, вы также можете установить его в файле .htaccess: php_flag short_open_tag on
  • 1
    Тот же процесс для пользователей IIS
Показать ещё 7 комментариев
68

Это можно сделать, включив 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

  • 5
    Короткие открытые теги не обязательно являются плохой практикой (я пытаюсь сохранять открытость здесь), но только потому, что Rasmus et al. решил предоставить поддержку по умолчанию для них в PHP5.4 не дает обоснования для их использования. Их использование может создать зависимость, которая в дальнейшем нежелательна, или вызвать путаницу с XML. Немного хорошего обсуждения здесь: stackoverflow.com/questions/200640/…
  • 1
    Ян. Мы не говорим о <? echo $var ?> короткий открытый тег, но <?= $var ?> короткий открытый тег. Afaik XML не должен быть затронут.
Показать ещё 4 комментария
18

Чтобы установить короткие теги для открытия с помощью брандмауэра script на Ubuntu:

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini
18

Это можно сделать, включив 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-я строка из вывода комментария. Файл будет указан по указанному пути.

2. Откройте файл php.ini и найдите short_open_tag. По умолчанию он находится в off, чтобы изменить его на on.

3. Перезагрузите сервер, выполните этот комментарий

service httpd restart

Спасибо

11

Я вижу, что все приведенные выше ответы частично верны. На самом деле все PHP-приложения 21-го века будут иметь FastCGI Process Manager (php-fpm), поэтому, как только вы добавите php-info() в свой test.php script и проверите правильный путь для 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
  • 2
    В моем случае: перезапуск службы sudo php7.0-fpm
  • 0
    Служба sudo php-fpm restart будет работать для любой версии PHP по умолчанию, которую вы установили на свой компьютер, если только у вас нет нескольких версий, в этом случае вы должны указать версию, на которую вы ссылаетесь
Показать ещё 1 комментарий
9

В 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
  • 0
    Пришлось сделать это на Debian Джесси. Это может относиться ко всем установкам PHP5-FPM.
9

Как просто, выполните следующие действия:

  • перейти в файл php.ini
  • найти, 'short_open_tag' и включить его,
  • перезапустить сервер

так, short_open_tag = Вкл

9

вам нужно включить short_open_tags.

short_open_tag = On
6

если вы отредактируете файл php.ini, не забудьте перезапустить службу (apache2 и т.д.), чтобы изменения в php.ini вступили в силу

5

Если вы используете 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 непосредственно на сервере.
4
; 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
4

Для пользователей Wamp Server существует более простой способ: Вы можете включить этот параметр просто (слева), щелкнув один раз на значке WampServer, выберите PHP → Настройки PHP → короткий открытый тег. Подождите секунду, затем WampServer автоматически перезапустит ваш PHP, а также его веб-службу.

изначально: http://osticket.com/forums/showthread.php?t=3149

1

Если вы используете xampp в окнах, пожалуйста, сделайте следующее

  • Откройте панель управления XAMPP.
  • Нажмите кнопку CONFIG.
  • Перейдите на страницу PHP (php.ini).

Найти short_open_tag с помощью утилиты ctrl + f

Вы найдете ;short_open_tag

удалите точку с запятой (;) из строки.

и сохраните его как short_open_tag = on

Наконец, перезапустите сервер Apache

1

если вы используете xampp, вы заметите, что файл php.ini дважды упоминает short_open_tag. Включите второй для short_open_tag = Вкл. Первый из них прокомментирован, и у вас может возникнуть соблазн раскомментировать и отредактировать его, но он перегружен вторым short_open_tag

0
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/apache2/php.ini

Это работает на php7.2 на ubuntu 16, тот же ответ, что и выше, Bradley Flood, хотя каталог, в котором хранится файл конфигурации, изменился.

Также вы можете изменить версию в строке php, чтобы она соответствовала вашей установленной версии.

0

Чтобы включить short_open_tag для определенного домена с php-fpm, вы должны изменить:

/etc/php5/fpm/pool.d/xxxxxxxxxx.conf

Где xxxxx - номер сокета домена.

И добавьте: php_value [short_open_tag] = Вкл

-2
 short_open_tag = On

в php.ini И перезапустите сервер Apache.

-7

Задайте asp_tags = On и short_open_tag = On как в файлах \apache\Apache2.2.21\bin\php.ini, так и \bin\php\php5.3.8\php.ini, а затем перезапустите сервер Apache.

  • 6
    asp_tags? зачем?
  • 1
    Asp, скорее всего, опечатка. Почему сообщество не может проявить немного жалости к @kal?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню