我正在尝试在一个项目中执行一些PHP代码(使用Dreamweaver),但是代码并没有运行。
当我查看源代码时,PHP代码出现为HTML标记(我可以在源代码中看到)。Apache正常运行(我正在使用XAMPP),PHP页面能够正常打开,但PHP代码未被执行。
有人对发生的情况有什么建议吗?
注意:文件已命名为filename.php
编辑: 代码..:
<?
include_once("/code/configs.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文件中没有使用短标签(<?
),这些标签默认情况下并非所有服务器都启用,使用它们是不鼓励的。使用<?php
代替(或者在php.ini中启用短标签,使用short_open_tag=On
如果你有依赖它们的代码)。
确保你通过像http://localhost/file.php
这样的URL访问你的文件,而不是通过本地文件访问file://localhost/www/file.php
。
最后,查看PHP手册以获取更多设置提示。
AddType application/x-httpd-php .php
这一���。非常感谢! - MatuDukeapt-get purge apache2; apt-get install apache2 libapache-mod-php5
。这将卸载旧版本的Apache2并安装新版本的Apache2和PHP5模块。 - ulkas.php
的文件,其中包含<?php echo("Success"); ?>
内容,并查看通过Web浏览器访问该文件是否会显示“Success”,而不是相关的PHP代码。 - shmeepsPHP7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
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
。完成这些步骤后,Apache2就可以将PHP7模块作为fast-CGI服务运行。 - Talvi Watia注意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>
httpd.conf
文件位于 /etc/apache2/httpd.conf
。如果使用的是 Ubuntu 系统,则需要修改同一目录下的 apache2.conf
文件才能支持 PHP7。 - Ahmed Sagarwala我在Ubuntu上运行Apache,我的问题是/etc/apache2/mods-available/php5.conf
文件缺少以下内容:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
你刚刚直接在浏览器中打开了你的php文件,而应该使用本地主机URL打开它。如果你直接从目录中打开文件,无论如何都不会执行php代码。
使用:http://localhost/index.php
或者http:127.0.0.1/index.php
启用php短代码。在你的情况下,你正在使用<?
,这是php短代码的写法,等同于<?php
。PHP短代码默认是禁用的。
如果你使用的是Ubuntu,请同时使用sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
这个命令。
我发现另一个导致这个问题的原因并已解决。我不小心将脚本保存为UTF-16
编码。似乎PHP5默认无法识别16位编码中的<?php
标记。
我发布这个答案是因为我的Virtualmin/Webmin管理界面决定禁用我的PHP引擎...花了我一段时间才找到解决方案,所以我想与大家分享:
另外,请务必检查与这个特定主机或虚拟主机相关的网站配置文件中是否有任何php_admin_value将PHP关闭的内容,例如:
php_admin_value engine Off
如果有疑问,就加上注释...
# php_admin_value engine Off
然后重新启动您的 Web 服务器。
/etc/apache2/mods-enabled/php7.conf
或php5.conf
。 - Sam Malayeksudo grep php_admin_value /etc/* -R
- Henry van Megen我再次遇到了这个问题,服务器下载html文件而不是处理它们。我有一段时间没有在电脑上使用apache web服务器,并且期间Ubuntu更新了两个更高版本,从最初安装的LTS版本。现在情况是这样的:
$ cat /etc/issue
Ubuntu 16.04 LTS
那么,php代码可以像下面这样正常工作:
$ sudo apt-get install lamp-server^
$ sudo a2enmod php7.0
$ sudo service apache2 restart
现在,Web服务器正在解析PHP。也许现在需要更新一些网站,因为现在运行的是PHP7.0,而以前运行的是PHP5。嗯,好吧。
**http://localhost/info.php**
并非来自
file:///var/www/info.php
PS:您可以注意到,如果从shell中写入
php info.php
IT通过代码(也就是PHP函数)提供答案。
如果我们在同一页面上,请执行以下操作:
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
之后,我遇到了上述问题。类似的问题有这个。
我不知道为什么,但它只发生在我的/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
现在一切都正常运作。
<?
短标签而不是<?php
? - Dan Grossman<?
)。它们已经被弃用,在很多地方并不起作用,而且完全没有必要。为了节省三个按键而允许您的代码有可能在可能运行的一半服务器上失败,这并不是一个合理的理由。 - mopsyd<?=
),无论服务器设置如何,它都应该可以在 php 5.4+ 上正常运行。 - mopsydtail -f -n 50 /var/log/apache2/error.log
帮助我找到了问题所在。 - aderchox