PHP code is not being executed, instead code shows on the page
Clash Royale CLAN TAG#URR8PPP
PHP code is not being executed, instead code shows on the page
I'm trying to execute some PHP code on a project (using Dreamweaver) but the code isn't being run.
When I check the source code, the PHP code appears as HTML tags (I can see it in the source code). Apache is running properly (I'm working with XAMPP), the PHP pages are being opened properly but the PHP code isn't being executed.
Does someone have a suggestion about what is happening?
Note: The file is already named as filename.php
filename.php
Edit:
The Code..:
<?
include_once("/code/configs.php");
?>
<?
<?php
Yes, i'm using <? ...
– Gui
Feb 25 '11 at 19:12
Don't EVER use short tags. (
<?
). They are deprecated, don't really work in a lot of places, and are otherwise completely unneccessary. Saving three keystrokes is not a valid reason to allow potential for your code to fail on probably half of the servers it may run on.– mopsyd
Feb 11 '15 at 19:53
<?
@mopsyd Where does it say that short tags are deprecated? Please note that short tags are not the same as short echo tags, and short echo tags have been supported by default since PHP 5.4, regardless of the
short_open_tag
setting.– Kyle Anderson
Mar 15 '16 at 19:23
short_open_tag
I am aware that short tags are not short echo tags, which is why I specified which I was talking about in the comment. At the time of writing, short tags were flagged for deprecation for the php 6 release, though that has apparently changed since. The problem still exists that a lot of servers have them disabled, which makes your code significantly less portable. This does not apply to short echo tags (
<?=
), which should run fine on php 5.4+ regardless of server settings.– mopsyd
Mar 18 '16 at 0:44
<?=
22 Answers
22
Sounds like there is something wrong with your configuration, here are a few things you can check:
Make sure that PHP is installed and running correctly. This may sound silly, but you never know. An easy way to check is to run php -v
from a command line and see if returns version information or any errors.
php -v
Make sure that the PHP module is listed and uncommented inside of your Apache's httpd.conf This should be something like LoadModule php5_module "c:/php/php5apache2_2.dll"
in the file. Search for LoadModule php
, and make sure that there is no comment (;
) in front of it.
LoadModule php5_module "c:/php/php5apache2_2.dll"
LoadModule php
;
Make sure that Apache's httpd.conf file has the PHP MIME type in it. This should be something like AddType application/x-httpd-php .php
. This tells Apache to run .php
files as PHP. Search for AddType, and then make sure there is an entry for PHP, and that it is uncommented.
AddType application/x-httpd-php .php
.php
Make sure your file has the .php
extension on it, or whichever extension specified in the MIME definition in point #3, otherwise it will not be executed as PHP.
.php
Make sure you are not using short tags in the PHP file (<?
), these are not enabled on all servers by default and their use is discouraged. Use <?php
instead (or enable short tags in your php.ini with short_open_tag=On
if you have code that relies on them).
<?
<?php
short_open_tag=On
Make sure you are accessing your file over your webserver using an URL like http://localhost/file.php
not via local file access file://localhost/www/file.php
http://localhost/file.php
file://localhost/www/file.php
And lastly check the PHP manual for further setup tips.
Don't know why, but installer of PHP 5.3.15 doesn't add the line
AddType application/x-httpd-php .php
. Thanks a lot!!– MatuDuke
Jul 25 '12 at 2:03
AddType application/x-httpd-php .php
@shmeeps: Where have you seen that short tags are deprecated? I've done some searching and can only find recommendations against them, nothing about deprecation. Granted for applications which are to be distributed it is better to use <?php in case the hosting server doesn't have them enabled, but for apps where you have full control over the server they're going to be on I don't see any reason not to use them.
– ClarkeyBoy
Oct 28 '13 at 16:35
point no 6 worked for me.. local access doesn't use the apache server
– KawaiKx
Jul 6 '14 at 15:24
point 2 worked for me the safe way -
apt-get purge apache2; apt-get install apache2 libapache-mod-php5
– ulkas
Sep 16 '14 at 20:41
apt-get purge apache2; apt-get install apache2 libapache-mod-php5
@full_prog_full Try uploading a file with a
.php
extension with the contents <?php echo("Success"); ?>
and see if accessing the file through a web browser results in "Success" being displayed without the associated PHP code.– shmeeps
Apr 18 '16 at 3:29
.php
<?php echo("Success"); ?>
I'm running Apache on Ubuntu and my issue was that the /etc/apache2/mods-available/php5.conf
file was missing this:
/etc/apache2/mods-available/php5.conf
<FilesMatch ".+.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
I added it back in and php was parsing php files correctly.
php7 :
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
While this code snippet may solve the question, including an explanation of how and why this solves the problem would really help to improve the quality of your post. Remember that you are answering the question for readers in the future, not just the person asking now! Please edit your answer to add explanation, and give an indication of what limitations and assumptions apply.
– Toby Speight
Feb 6 '17 at 18:31
This answer is linux related the topicstarter is clearly using windows.
– Raymond Nijland
Apr 24 '17 at 11:53
@RaymondNijland true but this is canonical and I found this question and it saved me after over an hour of troubleshooting.
– Goose
May 5 '17 at 20:57
How and Why: This happens when PHP7 doesn't configure the default fast-CGI service in the make script.
sudo a2enmod proxy_fcgi setenvif
creates three new mods /mods-available/proxy.conf proxy_fcgi.load proxy.load
Likewise, sudo a2enconf php7.0-fpm
creates a config file /conf-available/php7.0-fpm.conf
Once this is done and Apache2 can then run the PHP7 module as a fast-CGI service.– Talvi Watia
Nov 21 '17 at 12:49
sudo a2enmod proxy_fcgi setenvif
/mods-available/proxy.conf proxy_fcgi.load proxy.load
sudo a2enconf php7.0-fpm
/conf-available/php7.0-fpm.conf
worked for linux mint
– zzapper
Jan 20 at 23:41
I found another problem causing this issue and already solved it. I accidentally saved my script in UTF-16
encoding. It seems that PHP5 can't recognize <?php
tag in 16 bit encoding by default.
UTF-16
<?php
note for php 7 users, add this to your httpd.conf file:
# PHP 7 specific configuration
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
You saved my day bro. Thank you <3
– theRana
May 13 at 18:52
Just to help other people with this issue. The
httpd.conf
file is located in /etc/apache2/httpd.conf
If you're using Ubuntu, it would be apache2.conf
in the same directory that needs to be modified for PHP7.– Ahmed Sagarwala
Aug 14 at 19:07
httpd.conf
/etc/apache2/httpd.conf
apache2.conf
I'm posting this answer because my Virtualmin/Webmin admin interface decided it was a good idea to disable my PHP engine.. took me a while to find the solution, so I thought I'd share it with you guys:
Also, be sure to check that none of your website config files related to this specific host or virtualhost have any php_admin_value's in them that turn off PHP, like this:
php_admin_value engine Off
When in doubt, comment it...
# php_admin_value engine Off
And restart your webserver.
Where are these config settings exactly?
– cronoklee
Jul 27 '16 at 14:43
@cronoklee In vHost settings of httpd.conf. For existing hosts, you need to edit apache config in webmin. For future hosts, go to virtualmin > server template > apache website. Eitherway, this is not as secure as fastcgi - virtualmin's default. So the correct approach should be to troubleshoot why fcgi doesn't work, for example it may be caused by file permissions.
– Sheepy
Sep 9 '16 at 3:43
If you're using a version of Apache that doesn't have httpd.conf, look in
/etc/apache2/mods-enabled/php7.conf
or php5.conf
– LXXIII
Oct 20 '16 at 22:53
/etc/apache2/mods-enabled/php7.conf
php5.conf
When in doubt about the location of a certain configuration setting, you can always use grep to find what you're looking for by (for example in this case) typing:
sudo grep php_admin_value /etc/* -R
– Henry van Megen
May 23 at 11:05
sudo grep php_admin_value /etc/* -R
Oh God! I just saw your posted image again, you're just opening your php file into browser. you have open is using localhost url. if you open a file directly from your directory it will not execute the php code in any case.
use: http://locahost/index.php
or http:127.0.0.1/index.php
http://locahost/index.php
http:127.0.0.1/index.php
enable php short code in your case, you are using <?
which is php short code for <?php
<?
<?php
by default php short codes are disabled.
also use: sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
if you are a ubuntu user.
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
Why is mcrypt required when i'm just including a file? You should noticed that this question is old and the short tags issue was mentioned 16 times, also in the top comment of my question.
– Gui
Dec 6 '16 at 16:20
I just share my solution, I was also facing the same error and after executing this command of mcrypt my issue solved. you may also try.
– Hasan Baig
Dec 7 '16 at 7:43
by default php short codes are enabled. short_open_tag=On (Default Value=ON) in php 5.6
– zond
Jan 26 '17 at 13:38
I know it should sound silly... but seldom it happens.
Check if you are trying to execute php from
**http://localhost/info.php**
and not from
file:///var/www/info.php
ps> you can notice that if you write from shell
php info.php
it answer with the code (it means php functions)..
PHP works fine (checked using command line). but, when I access the file using URL, it shows PHP code.
– muaaz
Jun 17 '15 at 8:08
I've solved this by uninstalling XAMPP, and installing WAMP.
Thanks for the help.
i had similar problem but in my case solution was different.
my file that held php code was called "somename.html"
changed it to "somename.php" worked fine
This also solved it for me. Does anyone know if the sever will execute php in a .html file or does the file ending always have to be changed to .php when there's a line of php to be executed?
– full_prog_full
Nov 10 '16 at 14:42
depends upon the server settings, for most cases php code that existing in anyfile.html will execute. and if it does not, it can be changed, although idk how :P
– Netrus
Dec 4 '16 at 16:49
This just happened to me again, along with the server downloading html files, rather than processing. I had not use the webserver apache for some time on the computer and meanwhile Ubuntu updated like two more versions from originally installed LTS. Now it is
$ cat /etc/issue
Ubuntu 16.04 LTS
So the php worked after like so:
$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart
The webserver was now parsing the php. Maybe now got to update some webs since php7.0 now running where as it was before running php5. Oh well.
you just reinstalled entire server..
– RozzA
May 10 '17 at 21:38
on my ubuntu 14.04, apache 2.4, php 5.5.9 install, I tried with a sample.php on /var/www/html (default document root) and it worked ok.
So the problem was on my Virtual Servers config.
The solution was to include, on the Directory def containing the .php, this line:
php_admin_flag engine on
and where should I add this line in Apache file in httpd.conf of my virtual server? and I am using Webmin
– suresh pareek
Aug 21 '17 at 12:45
Check all the packages you have installed for php using:
yum list installed | grep remi
Install all relevant php packages, especially php-devel on your machine.
This was in my .htaccess
DirectoryIndex index.html index.htm
index.html contained PHP code. By default, PHP won't process files with extentions like htm* as PHP code.
You can override this, by adding the following to .htaccess:
<FilesMatch ".+.html$">
SetHandler application/x-httpd-php
</FilesMatch>
For fresh setup of LAMP running php 7
edit the file /etc/httpd/conf/httpd.conf
Note: make sure to make backup for it before changing anything.
Paste this at the very bottom of the file:
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Then, search for LoadModule and paste the following line:
LoadModule php7_module modules/libphp7.so
This line will simply ask httpd to load the php 7 module
Then restart httpd
I think the problem that it is showing code instead of the result is that it is not going to local host . recheck what address u r going in. are u going to a local file directory or to the local host.
from the screenshot u sent it is going to ur computer not to the localhost.
"file:/// " it should be "localhost/"
Reinstalling the mcrypt
module worked for me.
mcrypt
$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
It honestly did, maybe because I hadn't configured the PHP properly on my system.But, since the question I asked regarding the same issue has been marked as a duplicate to this question, I only could answer it here. I wonder why the down vote.
– b.g
Oct 17 '16 at 13:06
This answer is linux related the topicstarter is clearly using windows
– Raymond Nijland
Apr 24 '17 at 11:55
I had a case that I accidentally started untaring my files directory in root. It added the .htaccess file from my files folder that would block all php
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
Bottom line check the .htaccess file on root.
If you have configuration like this:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
<FilesMatch ".php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
Uncomment next lines in your httpd.conf
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
It works for me
Add AddType application/x-httpd-php .php
to your httpd.conf file if you are using Apache 2.4
AddType application/x-httpd-php .php
I faced this issue on php 7.1 that comes with High Sierra (OS X 10.13.5), editing /etc/apache2/httpd.conf
with following changes helped:
/etc/apache2/httpd.conf
Uncomment this line
LoadModule php7_module libexec/apache2/libphp7.so
Paste following at the end
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
Make sure the script contains
<?php
before the code that should be executed. There should be no space between <?
and php
in this.
<?
php
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
Are you using short tags
<?
instead of<?php
?– Dan Grossman
Feb 25 '11 at 19:09