How to enable PHP short tags?

  • Added:
  • |
  • In: Basic PHP

I have a web application on a Linux server which starts with <?

I needed to copy this application to a windows environment and everything is working fine except that an SQL statement is being rendered differently. I don't know if this has to do with the script beginning with <?php instead of <? because I don't know from where to enable the <? from the PHP.ini so I changed it to <?php

I know that these 2 statements are supposed to mean the same but I need to test it with <? in order to ensure that the application is exactly the same. This way I can eliminate another possibility.


This Question Has 16 Answeres | Orginal Question | seedg

To enable short_open_tag for a particular domain with php-fpm, you must edit :


Where xxxxx is the socket number of the domain.

And add : php_value[short_open_tag] = On

This can be done by enabling short_open_tag in php.ini:

short_open_tag = on 

If you don't have access to the php.ini you can try to enable them trough the .htaccess file but it's possible the hosting company disabled this if you are on shared hosting:

php_value short_open_tag 1 

For the people thinking that short_open_tags are bad practice as of php 5.4 the <?= ... ?> shorttag will supported everywhere, regardless of the settings so there is no reason not to use them if you can control the settings on the server. Also said in this link: short_open_tag

; Default Value: On ; Development Value: Off ; Production Value: Off ; ;short_open_tag=Off <--Comment this out ; XAMPP for Linux is currently old fashioned short_open_tag = On <--Uncomment this 

For Wamp Server users there is easier way: You may enable that setting simply (left) click once on the WampServer icon, choose PHP -> PHP settings -> short open tag. Wait for a second, then WampServer will automatically restart your PHP and also its web service.

originally from:

you need to turn on short_open_tags.

short_open_tag = On 

If you are using xampp in windows then please do following

  1. Open XAMPP control panel.
  2. Click on CONFIG button.
  3. Go to PHP (php.ini) option.

Find short_open_tag using ctrl+f utility

You will found ;short_open_tag

kindly remove the semicolon (;) from line.

and keep it as short_open_tag = on

Finally, restart your Apache server

As simple, as that, follow the following steps:

  1. go to php.ini file
  2. find, 'short_open_tag' and set it to on,
  3. restart the server

so, short_open_tag = On

In CentOS 6(tested on Centos 7 too) you can't set short_open_tag in /etc/php.ini for php-fpm. You will have error:

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 

You must edit config for your site, which can found in /etc/php-fpm.d/www.conf And write at end of file:

php_value[short_open_tag] = On 



in php.ini

And restart your Apache server.

This can be done by enabling short_open_tag in php.ini:

1.To locate php.ini file,on comment line execute

 php --ini 

you will get some thing like this,

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 

See 2nd line from the comment output.The file will be in the mentioned path.

2.Open php.ini file and find short_open_tag. By default it is in off change it to on.

3.Restart the server,execute this comment

service httpd restart 


if using xampp, you will notice the php.ini file has twice mentioned short_open_tag . Enable the second one to short_open_tag = On . The first one is commented out and you might be tempted to uncomment and edit it but it is over-ridden by a second short_open_tag

If you are using Ubuntu with Apache+php5, then on current versions there are 2 places where you need to change to short_open_tag = On

  1. /etc/php5/apache2/php.ini - this is for the pages loaded through your web server (Apache)
  2. /etc/php5/cli/php.ini - this configuration is used when you launch your php files from command line, like: php yourscript.php - that goes for manually or cronjob executed php files directly on the server.

if you edit your php.ini file, remember to restart your service (apache2, etc) for the edits to php.ini to take effect

Set the asp_tags = On and short_open_tag = On in both the files \apache\Apache2.2.21\bin\php.ini and \bin\php\php5.3.8\php.ini and then restart the apache server.

To set short tags to open from a Vagrant install script on Ubuntu:

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

I can see all answers above are partially correct only. In reality all 21st Century PHP apps will have FastCGI Process Manager(php-fpm) so once you have added php-info() into your test.php script and checked the correct path for php.ini

Go to php.ini and set short_open_tag = On 

IMPORTANT: then you must restart your php-fpm process so this can work!

sudo service php-fpm restart 

and then finally restart your nginx/http server

sudo service nginx restart 

I am...

Sajjad Hossain

I have five years of experience in web development sector. I love to do amazing projects and share my knowledge with all.

Are you searching for Good Quality hosting?
You can Try It!
Connect Social With PHPAns