我正在尝试在项目上执行一些PHP代码(使用Dreamweaver),但是该代码未在运行。
当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到它)。 Apache正常运行(我正在使用XAMPP),PHP页面已正确打开,但PHP代码未执行。
有人对正在发生的事情有建议吗?
注意:文件已被命名为filename.php
编辑:
编码..:
include_once("/code/configs.php");
?>
您是否使用短标签而不是?
@ kjy112如果服务器未将文件解析为PHP,则永远不会调用PHP,并且不会生成任何错误。错误情况不会导致源代码可见。
发布。码。 -它可以帮助他人帮助您
@dangrossman tru,没有读过他说代码出现的部分
是的,即时通讯使用
您是否从phpinfo得到了任何结果?(请参见示例1,php.net / manual / en / function.phpinfo.php)。如果不这样做,则可能需要重新配置apache。
这篇技巧对我有用..."实际上使用本地主机file://localhost/www/file.php之类的URL在本地服务器上使用localhost / file.php这样的文件运行文件"
切勿使用短标签。 ()。它们已被弃用,在很多地方都没有真正起作用,否则完全没有必要。保存三个击键不是使代码可能在其可能运行的一半服务器上失败的有效理由。
@mopsyd在哪里说不推荐使用短标签?请注意,短标记与短回波标记不同,并且自PHP 5.4起默认支持短回波标记,无论short_open_tag设置如何。
我知道短标签不是短回显标签,这就是为什么我在评论中指定了我正在谈论的内容。在撰写本文时,短标记已标记为弃用php 6版本,尽管此后显然已经改变。问题仍然存在,许多服务器都禁用了它们,这使代码的可移植性大大降低。这不适用于短的回显标记(=),无论服务器设置如何,该标记都应在php 5.4+上正常运行。
愚蠢地谈论短标签。长标签很烂,而且难看。香港专业教育学院从未有过十年的php编程问题。他们几乎从来都不是问题
没有php6。工作短标签取决于php配置。
听起来您的配置有问题,您可以检查以下几件事:
确保PHP已安装并正确运行。这听起来可能很愚蠢,但您永远不会知道。一种简单的检查方法是从命令行运行php -v,并查看是否返回版本信息或任何错误。
确保在Apache的httpd.conf中列出了PHP模块并且未对其进行注释。该文件中的内容应类似于LoadModule php5_module"c:/php/php5apache2_2.dll"。搜索LoadModule php,并确保前面没有注释(;)。
确保Apache的httpd.conf文件中包含PHP MIME类型。这应该类似于AddType application/x-httpd-php .php。这告诉Apache将.php文件作为PHP运行。搜索AddType,然后确保有一个PHP条目,并且没有注释。
确保文件上具有.php扩展名,或者在点#3的MIME定义中指定的任何扩展名,否则它将不会作为PHP执行。
确保您未在??PHP文件()中使用短标签,默认情况下未在所有服务器上启用短标签,不建议使用它们。使用代替(或者,如果您有依赖于它们的代码,则在short_open_tag=On中的php.ini中启用短标签)。
确保您正在使用Web服务器使用http://localhost/file.php之类的URL访问文件,而不是通过本地文件访问file://localhost/www/file.php
最后,查看PHP手册以获取更多设置提示。
不知道为什么,但是PHP 5.3.15的安装程序未添加行AddType applicationx-httpd-php .php。非常感谢!!
我需要输入提到的AddType,但是该文件是只读的。我如何克服这个问题并在其中写下新的一行?
@shmeeps:您在哪里看到短标签已被弃用?香港专业教育学院做了一些搜索,只能找到针对他们的建议,与弃用无关。授予要分发的应用程序,最好在主机服务器未启用的情况下使用
点6对我有用..本地访问不使用apache服务器
第2点以安全的方式为我工作-apt-get purge apache2; apt-get install apache2 libapache-mod-php5
@ClarkeyBoy您正确。不建议使用短标签,我已解决了问题。
短标签在这里不起作用(服务器2008),需要研究原因,但至少我知道
我检查了httpd.conf并且缺少行LoadModule php5_module"c:phpphp5apache2_2.dll"。是不是很奇怪?无论如何,我应该添加自己吗?我还在其他站点中看到您应该取消注释行LoadModule php5_module moduleslibphp5.so,这有什么不同吗? Windows用户在这里。
第5点起到了作用。已经有一个使用短标签的完整网站。
如何检查共享服务器上的#1点?
@full_prog_full尝试上传扩展名为.php且内容为的文件,并查看是否通过Web浏览器访问该文件是否导致显示"成功"而没有关联的PHP代码。
第三点对我有用。知道为什么需要这样做吗?
在我的整个系统上,没有名为httpd.conf的文件。我用find -name"httpd.conf"搜索
在ubuntu 16.04中的@ulkas中,对于apache2和php7,我安装了sudo apt-get install libapache2-mod-php7.0,它自动配置了启用了mods的文件夹以供php使用。
鉴于PHP的命令行和Web服务器安装通常是独立的,因此我认为第1点不是很有用。同样,鉴于提出此常见问题的人的反应,第6点可能应该升级到第1点。
如果没有Apaches httpd.conf @shmeeps我该怎么办
第三点帮了我大忙!非常感谢你!!!
我将澄清第5点,并提及用户应确保其代码以开头。
为什么将AddType设置为" application / x-httpd-php"而不是" text / html"?文档说AddType是为浏览器设置mime类型。因此" text / html"将是正确的。
php7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
尽管此代码段可以解决问题,但包括如何解决以及如何解决该问题的说明,确实有助于提高您的帖子质量。请记住,您将来会为读者回答问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。
这个答案与linux相关,topicstarter显然是在使用Windows。
@RaymondNijland是正确的,但这是规范的,我发现了这个问题,经过一个多小时的故障排除,它为我节省了时间。
方式和原因:当PHP7没有在make脚本中配置默认??的快速CGI服务时,会发生这种情况。 sudo a2enmod proxy_fcgi setenvif创建三个新的mods。mods-availableproxy.conf proxy_fcgi.load proxy.load同样,sudo a2enconf php7.0-fpm创建一个配置文件。conf-availablephp7.0-fpm.conf完成后,Apache2随后可以将PHP7模块作为快速CGI服务运行。
为Linux Mint工作
我在Ubuntu上运行Apache,我的问题是/etc/apache2/mods-available/php5.conf文件缺少此文件:
SetHandler application/x-httpd-php
我重新添加了它,php正确地解析了php文件。
对于php 7用户的注释,请将其添加到您的httpd.conf文件中:
# PHP 7 specific configuration
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php
只是为了帮助其他人解决这个问题。 httpd.conf文件位于etcapache2httpd.conf中(如果您使用Ubuntu),它将位于apache2.conf所在的同一目录中,该目录需要针对PHP7进行修改。
我发现了另一个导致此问题的问题,并已解决。我不小心将脚本保存为UTF-16编码。默认情况下,PHP5似乎无法识别16位编码的标签。
我发布此答案是因为我的Virtualmin / Webmin管理界面认为禁用PHP引擎是个好主意。花了我一段时间才找到解决方案,所以我想与大家分享一下:
另外,请确保检查与该特定主机或虚拟主机相关的网站配置文件中是否没有任何php_admin_value可以关闭PHP,例如:
php_admin_value engine Off
如有疑问,请评论...
# php_admin_value engine Off
并重新启动您的Web服务器。
这些配置设置到底在哪里?
@cronoklee在httpd.conf的vHost设置中。对于现有主机,您需要在webmin中编辑apache配置。对于将来的主机,请转至virtualmin>服务器模板> apache网站。无论哪种方式,它都不如fastcgi安全-virtualmins默认。因此,正确的方法应该是对fcgi为何不起作用进行故障排除,例如,它可能是由文件权限引起的。
如果您使用的Apache版本没有httpd.conf,请查看etcapache2mods-enabledphp7.conf或php5.conf
如果对某个配置设置的位置有疑问,可以始终使用grep来查找您要查找的内容,例如(在这种情况下)键入:sudo grep php_admin_value etc* -R
您只是在浏览器中打开php文件。您必须使用localhost网址打开它。如果您直接从目录中打开文件,则在任何情况下都不会执行php代码。
使用:http://locahost/index.php或http:127.0.0.1/index.php
启用php短代码。在您的情况下,您正在使用,这是的php短代码。默认情况下,禁用PHP短代码。
如果您是ubuntu用户,也请使用:sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt。
当我仅包含文件时,为什么需要mcrypt?您应该注意到,这个问题已经很久了,短标签问题也被提及了16次,也是我问题的最高注释。
我只是分享我的解决方案,我也遇到了同样的错误,执行了mcrypt的此命令后,我的问题解决了。您也可以尝试。
默认情况下,启用了php短代码。在php 5.6中short_open_tag = On(默认值= ON)
这是我的问题,我的virtualmin / apache配置用于127.0.0.2,但是我将我的外部IP地址放在浏览器中,我刚刚更新了v / a配置,现在它可以工作了
我知道这听起来很傻...但是很少发生。
检查您是否尝试从以下位置执行php
**http://localhost/info.php**
而不是
file:///var/www/info.php
ps>您会注意到,如果您从shell编写
php info.php
它回答的代码(这意味着PHP功能)。
PHP可以正常工作(使用命令行检查)。但是,当我使用URL访问文件时,它显示了PHP代码。
只是服务器再次下载html文件,而不是进行处理,这再次发生在我身上。我有一段时间没有在计算机上使用Web服务器apache了,与此同时,Ubuntu像从最初安装的LTS的两个版本更新了。现在它是
$ cat /etc/issue
Ubuntu 16.04 LTS
因此,PHP像这样工作了:
$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart
网络服务器现在正在解析php。由于php7.0现在可以像运行php5之前一样运行,因此现在也许需要更新一些站点。那好吧。
您刚刚重新安装了整个服务器。
我已经通过卸载XAMPP和安装WAMP来解决了这一问题。
谢谢您的帮助。
我是xampp,但效果很好。您是否找到了为什么显示PHP代码@Gui的原因
我在High Sierra(OS X 10.13.5)附带的php 7.1上遇到了这个问题,通过以下更改来编辑/etc/apache2/httpd.conf:
取消注释此行
LoadModule php7_module libexec/apache2/libphp7.so
最后粘贴
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php
同样,您可以建议Wamp 3版本相同的错误。 wamp 3中没有/etc/apache2/httpd.conf文件夹路径。@AamirR
在我的ubuntu 14.04,apache 2.4,php 5.5.9安装上,我尝试在/ var / www / html(默认文档根目录)上使用sample.php,它工作正常。
所以问题出在我的虚拟服务器配置上。
解决方案是在包含.php的Directory def上包括以下行:
php_admin_flag engine on
在虚拟服务器的httpd.conf中的Apache文件中应在哪一行添加?我正在使用Webmin
我有类似的问题,但就我而言,解决方案是不同的。
我保存了php代码的文件称为" somename.html"
将其更改为" somename.php"工作正常
这也为我解决了。有谁知道服务器将在.html文件中执行php,还是在要执行一行php时将文件结尾始终更改为.php?
取决于服务器设置,在大多数情况下,将执行anyfile.html中存在的php代码。如果不是,则可以更改,尽管idk如何:P
使用以下命令检查已为php安装的所有软件包:
yum list installed | grep remi
在您的计算机上安装所有相关的php软件包,尤其是php-devel。
这是在我的.htaccess中
DirectoryIndex index.html index.htm
index.html包含PHP代码。默认情况下,PHP不会将扩展名为htm *的文件作为PHP代码进行处理。
您可以通过在.htaccess中添加以下内容来覆盖它:
SetHandler application/x-httpd-php
确保脚本包含
在应执行的代码之前。在和php之间不应有空格。
对于运行php 7的LAMP的全新设置
编辑文件/etc/httpd/conf/httpd.conf
注意:在进行任何更改之前,请确保对其进行备份。
将此粘贴到文件的最底部:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php
然后,搜索LoadModule并粘贴以下行:
LoadModule php7_module modules/libphp7.so
这行代码只会要求httpd加载php 7模块
然后重启httpd
我认为它显示的是代码而不是结果的问题是它不会发送到本地主机。重新检查您要输入的地址。您要转到本地文件目录还是本地主机。
从您发送的屏幕快照中,它将发送到您的计算机而不是本地主机。
" file:///"它应该是" localhost /"
我遇到了一种情况,我不小心开始在根目录下解压缩我的文件目录。它从我的文件文件夹中添加了.htaccess文件,该文件将阻止所有php
# If we know how to do it safely, disable the PHP engine entirely.
php_flag engine off
底线检查根目录下的.htaccess文件。
如果您有这样的配置:
ServerName example.com
DocumentRoot"/var/www/example.com"
SetHandler"proxy:fcgi://127.0.0.1:9000"
在您的httpd.conf中取消注释下一行
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
这个对我有用
如果使用Apache 2.4,则将AddType application/x-httpd-php .php添加到您的httpd.conf文件中
仅仅花了几个小时尝试使PHP 5在Windows 10上与Apache 2.4一起运行。最后对我来说,这是httpd.conf LoadModule中的一个错字。在denny2018的这个apachelounge线程中,通过最后一个答案提请注意编写和确切的模块路径。谢谢!
After two nights I discovered... My directory was written c: (lower case)
我有LoadModule php5_module"c:/php/php5apache2.dll",但对Apache 2.4正确的是:
LoadModule php5_module"C:/php/php5apache2_4.dll"
因此,我也错过了_4之前(对于Apache 2.4)。适用于我的完整代码段:
# PHPLoadModule php5_module"C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
SetHandler application/x-httpd-php
刚刚尝试过PHP7。httpd.conf中的Apache x 2.4的LoadModule行读取
LoadModule php7_module"C:/php/php7apache2_4.dll"
当前php手册显示c:/php/php5apache2.dll当然需要调整。
就我而言(Apache / 2.4.34),
取消注释特定模块后
"LoadModule php7_module libexec/apache2/libphp7.so"
从
"/etc/apache2/httpd.conf"
我的问题不见了。
重新安装mcrypt模块对我有用。
$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
说实话,也许是因为我没有在系统上正确配置PHP。但是,由于我问的关于同一问题的问题已被标记为该问题的重复,因此我只能在这里回答。我不知道为什么要投反对票。
这个答案是与Linux相关的topicstarter显然是使用Windows
如果我们在同一页面中,请执行以下操作
sudo apt-get install php -y
sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y
要在Apache2中启用PHP 7.2 FPM,请执行以下操作:
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm
更新2:Apache下载.php文件而不是渲染
之后,我面临上述问题。 也有类似的问题。
我不知道为什么,但这只发生在/var/www/html/根文件夹中的.php文件中。 子目录一切正常。 (例如,wordpress和phpmyadmin工作正常)
所以这是我的解决方案。 我决定启用php模块。 所以我运行了这个命令:
a2enmod php7.2
但是我得到了这个错误:
Considering dependency mpm_prefork for php7.2:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php7.2, aborting
所以我决定通过运行以下命令来禁用MPM:
sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event
然后重新启动Apache:
systemctl restart apache2
然后启用php7.2(我的安装版本):
sudo a2enmod php7.2
现在一切正常。
您放在/ var / www / html /中的文件应具有.php
forexample example.php如果它是example,则它不起作用,但是如果将其更改为example.php,则它可以工作。