我正在尝试在项目上执行一些PHP代码(使用Dreamweaver),但代码没有运行。
当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到它)。 Apache正常运行(我正在使用XAMPP),PHP页面正在正常打开但PHP代码没有被执行。
有人对正在发生的事情提出建议吗?
注意:该文件已命名为filename.php
修改 守则......:
<?
include_once("/code/configs.php");
?>
答案 0 :(得分:374)
听起来您的配置有问题,以下是您可以查看的一些内容:
确保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 tags,默认情况下未在所有服务器上启用并且不鼓励使用它们。如果您的代码依赖于<?php
,请使用short_open_tag=On
代替(enable short tags in your php.ini代替http://localhost/file.php
)。
确保您使用file://localhost/www/file.php
之类的网址通过网络服务器访问您的文件,而不是通过本地文件访问{{1}}
答案 1 :(得分:41)
php7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
答案 2 :(得分:31)
我在Ubuntu上运行Apache,我的问题是/etc/apache2/mods-available/php5.conf
文件遗漏了这个:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
我将其添加回来并且php正确解析了php文件。
答案 3 :(得分:24)
请注意,对于php 7用户,请将其添加到httpd.conf文件中:
# 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>
答案 4 :(得分:21)
我发现另一个问题导致了这个问题并且已经解决了。我不小心以UTF-16
编码保存了我的脚本。似乎PHP5默认情况下无法识别16位编码中的<?php
标记。
答案 5 :(得分:18)
我发布了这个答案,因为我的Virtualmin / Webmin管理界面决定禁用我的PHP引擎是个好主意..花了我一段时间才找到解决方案,所以我想我会分享它你们:
另外,请务必检查与此特定主机或虚拟主机相关的网站配置文件是否都没有关闭PHP的php_admin_value,如下所示:
php_admin_value engine Off
如有疑问,请评论......
# php_admin_value engine Off
然后重新启动您的网络服务器。
答案 6 :(得分:15)
您只是将您的php文件打开到浏览器中。您必须使用localhost url打开它。如果你直接从你的目录打开一个文件,它将无论如何都不会执行php代码。
使用:http://locahost/index.php
或http:127.0.0.1/index.php
启用php短代码。在您的情况下,您正在使用<?
这是<?php
的php短代码。默认情况下,php短代码被禁用。
如果您是ubuntu用户,也可以使用:sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
。
答案 7 :(得分:8)
我知道这应该听起来很傻......但很少发生。
检查您是否尝试从
执行php**http://localhost/info.php**
而不是
file:///var/www/info.php
PS&GT;你可以注意到,如果你从shell编写
php info.php
它用代码回答(它意味着php函数)..
答案 8 :(得分:7)
这再次发生在我身上,连同服务器下载html文件,而不是处理。我没有在计算机上使用webserver 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之前。哦,好吧。
答案 9 :(得分:5)
我通过卸载XAMPP并安装WAMP解决了这个问题。 谢谢你的帮助。
答案 10 :(得分:4)
在我的ubuntu 14.04,apache 2.4,php 5.5.9安装上,我尝试在/ var / www / html(默认文档root)上使用sample.php,它运行正常。 所以问题出在我的虚拟服务器配置上。 解决方案是在包含.php的Directory def中包含以下行:
php_admin_flag engine on
答案 11 :(得分:4)
我在High Sierra(OS X 10.13.5)附带的php 7.1上遇到了这个问题,编辑/etc/apache2/httpd.conf
时有以下更改:
取消注释此行
LoadModule php7_module libexec/apache2/libphp7.so
在结尾处粘贴
<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>
答案 12 :(得分:4)
我有类似的问题但在我的情况下解决方案是不同的。 我持有php代码的文件名为“somename.html” 将其更改为“somename.php”工作正常
答案 13 :(得分:3)
使用以下方法检查您为 php 安装的所有软件包:
yum list installed | grep remi
在您的计算机上安装所有相关的 php 软件包,尤其是 php-devel 。
答案 14 :(得分:2)
这是我的.htaccess
DirectoryIndex index.html index.htm
index.html包含PHP代码。默认情况下,PHP不会处理像htm *这样的扩展名为PHP代码的文件。
您可以通过将以下内容添加到.htaccess来覆盖此内容:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
答案 15 :(得分:2)
用于运行php 7的LAMP的新设置 编辑文件/etc/httpd/conf/httpd.conf 注意:在更改任何内容之前,请确保为其进行备份。
将其粘贴到文件的最底部:
<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>
然后,搜索LoadModule并粘贴以下行:
LoadModule php7_module modules/libphp7.so
这一行只会让httpd加载php 7模块
然后重启httpd
答案 16 :(得分:2)
在我的情况下,php模块未加载。试试这个:
apache2ctl -M
。寻找类似php7_module (shared)
libapache2-mod-php7.3
。所以我做了:a2enmod php7.3
,问题解决了。答案 17 :(得分:2)
此问题的另一个可能原因可能是您正在尝试从divide(Aggregate( existing
{
[Fact Source].[Fact Source].&[Debt]
}
,[Measures].[Anonymous Systems]
模块的“用户目录”中运行脚本。默认情况下,在用户目录中运行PHP脚本是禁用的。如果脚本位于主文件夹的UserDir
目录中,并且您试图从public_html
访问它,则会遇到此问题。
要解决此问题,请打开http://localhost/~your_username
。您必须注释或删除显示在底部的标签块
/etc/apache2/mods-enabled/php7.2.conf
答案 18 :(得分:1)
就我而言(Apache / 2.4.34),
取消注释特定模块后
“ LoadModule php7_module libexec / apache2 / libphp7.so”
来自
“ / etc / apache2 / httpd.conf”
我的问题不见了。
答案 19 :(得分:1)
使用 Debian 10 测试的安装 Apache + php7 的最简单方法:
apt-get update -y
apt-get install apache2 php7.0 libapache2-mod-php -y
sudo service apache2 restart
答案 20 :(得分:1)
对于php7.3.*,您可以尝试安装这些模块。它对我有用。
sudo apt-get install libapache2-mod-php7.3
sudo service apache2 restart
答案 21 :(得分:1)
尝试重新启动apache服务器。这是我犯的错误-安装php后忘记重新启动服务器!
service httpd restart
答案 22 :(得分:1)
我有一个案例,我不小心开始在root中解开我的文件目录。它添加了我的文件夹中的.htaccess文件,它会阻止所有的php
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
底线检查root上的.htaccess文件。
答案 23 :(得分:1)
仅花费了数小时的时间尝试使 PHP 5与Windows 10上的Apache 2.4一起运行。最后对我来说,这是 httpd.conf LoadModule
中的错字。提请注意通过last answer in this apachelounge thread of denny2018的编写和确切的模块路径。谢谢!
两夜后,我发现...我的目录写成
c:
(小写)
我有LoadModule php5_module "c:/php/php5apache2.dll"
,但是 Apache 2.4正确是:
LoadModule php5_module "C:/php/php5apache2_4.dll"
所以我也错过了_4
(对于 apache 2.4 )。适用于我的完整代码段:
# PHP
LoadModule php5_module "C:/php/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
只需尝试 PHP 7 。 httpd.conf 中的LoadModule
行用于Apache 2.4读取
LoadModule php7_module "C:/php/php7apache2_4.dll"
当前php manual shows up c:/php/php5apache2.dll
当然需要调整。
答案 24 :(得分:1)
我认为它显示代码而不是结果的问题是它不会转到本地主机。重新检查你要进入的地址。你要去本地文件目录还是本地主机。
从您发送的屏幕截图中,它将是您的计算机而不是本地主机。
&#34; file:///&#34;它应该是&#34; localhost /&#34;
答案 25 :(得分:1)
确保脚本包含
<?php
应该执行的代码之前。此处<?
和php
之间不应有空格。
答案 26 :(得分:1)
如果您使用的是Apache 2.4
,请将AddType application/x-httpd-php .php
添加到httpd.conf文件中
答案 27 :(得分:1)
如果你有这样的配置:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
取消注释httpd.conf中的下一行
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
它对我有用
答案 28 :(得分:1)
重新安装mcrypt
模块对我有用。
$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
答案 29 :(得分:0)
您放入/ var / www / html /的文件应具有.php 如果是exampleexample.php,那么它就不能正常工作,但是如果将其更改为example.php,它就可以工作。
答案 30 :(得分:0)
如果我们在同一个页面中,请执行以下操作
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
在那之后,我遇到了上述问题。还有类似的问题,例如this。
我不知道为什么,但是它只发生在/var/www/html/
根文件夹中的.php文件中。子目录一切正常。 (例如wordpress和phpmyadmin工作正常)
这是我的解决方案。我决定启用php模块。所以我运行了这个命令:
a2enmod php7.2
但是我得到了这个错误:
考虑对php7.2的依赖性mpm_prefork: 考虑到mpm_prefork的冲突mpm_event: 错误:模块mpm_event已启用-由于冲突而无法继续。首先需要禁用它! 考虑到mpm_prefork的冲突mpm_worker: 错误:无法为php7.2启用依赖项mpm_prefork,正在终止
所以我决定通过运行以下命令来禁用mpm:
sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker
sudo a2dismod mpm_event
然后重新启动apache:
systemctl restart apache2
然后启用php7.2(我的安装版本):
sudo a2enmod php7.2
现在一切正常。
答案 31 :(得分:0)
在尝试上述所有方法但没有任何效果后,请考虑重新启动您的电脑。解决了我的问题。
答案 32 :(得分:0)
我最近升级了一个 centos 服务器以使用 php 8。
升级后 php 停止工作,apache 开始以文本形式为我提供 php 代码。
花了很长时间寻找没有更新的配置设置,我将其追踪到:
在/etc/httpd/conf.d
<IfModule mod_php7.c>
需要更改为:
<IfModule mod_php.c>
您可能会在其他地方看到 mod_php7
检查,这些检查可能会更新为 mod_php
变体,但这个绝对为我修复了它。
之后不要忘记重启服务器。