PHP代码未被执行,而是在页面上显示代码

时间:2011-02-25 19:06:51

标签: php apache

我正在尝试在项目上执行一些PHP代码(使用Dreamweaver),但代码没有运行。

当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到它)。 Apache正常运行(我正在使用XAMPP),PHP页面正在正常打开但PHP代码没有被执行。

有人对正在发生的事情提出建议吗?

注意:该文件已命名为filename.php

修改 守则......:

<?
include_once("/code/configs.php");
?>

The print

33 个答案:

答案 0 :(得分:374)

听起来您的配置有问题,以下是您可以查看的一些内容:

  1. 确保PHP已正确安装并运行。这可能听起来很傻,但你永远不会知道。一种简单的检查方法是从命令行运行php -v,看看是否返回版本信息或任何错误。

  2. 确保在Apache的httpd.conf中列出了和取消注释的PHP模块。这应该与文件中的LoadModule php5_module "c:/php/php5apache2_2.dll"类似。搜索LoadModule php,并确保其前面没有评论(;)。

  3. 确保Apache的httpd.conf文件中包含PHP MIME类型。这应该是AddType application/x-httpd-php .php。这告诉Apache以PHP运行.php个文件。搜索AddType,然后确保有一个PHP条目并且它已取消注释

  4. 确保您的文件上有.php扩展名,或者在第3点的MIME定义中指定的扩展名,否则它将不会以PHP格式执行。

  5. 确保您没有在PHP文件(<?)中使用short tags,默认情况下未在所有服务器上启用并且不鼓励使用它们。如果您的代码依赖于<?php,请使用short_open_tag=On代替(enable short tags in your php.ini代替http://localhost/file.php)。

  6. 确保您使用file://localhost/www/file.php之类的网址通过网络服务器访问您的文件,而不是通过本地文件访问{{1}}

  7. 最后检查PHP manual for further setup tips

答案 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.phphttp: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时有以下更改:

  1. 取消注释此行

    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. 在结尾处粘贴

    <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模块未加载。试试这个:

  1. 检查已加载的模块:apache2ctl -M。寻找类似php7_module (shared)
  2. 的模块
  3. 如果未列出任何php模块,请尝试加载与您的php版本相对应的模块。在我的情况下,php数据包为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

更新2:Apache下载.php文件而不是呈现

在那之后,我遇到了上述问题。还有类似的问题,例如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)

PHP 8、Centos 7、Apache 2

我最近升级了一个 centos 服务器以使用 php 8。

升级后 php 停止工作,apache 开始以文本形式为我提供 php 代码。

花了很长时间寻找没有更新的配置设置,我将其追踪到:

/etc/httpd/conf.d

<IfModule  mod_php7.c>

需要更改为:

<IfModule  mod_php.c>

您可能会在其他地方看到 mod_php7 检查,这些检查可能会更新为 mod_php 变体,但这个绝对为我修复了它。

之后不要忘记重启服务器。