问题:未执行PHP代码,而是在页面上显示代码

我正在尝试在项目上执行某些PHP代码(使用Dreamweaver),但是该代码未在运行。

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

有人对发生的事情有建议吗?

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

编辑:代码...:

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

标签:php,apache

回答1:

听起来好像您的配置有问题,这是您可以检查的几件事:

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

  2. 确保在Apache的httpd.conf中列出PHP模块且未注释。这应该类似于LoadModulephp5_module"c:/php/php5apache2_2.dll"。搜索LoadModulephp,并确保它前面没有注释(;)。

  3. 确保Apache的httpd.conf文件具有PHP MIME类型。这应该类似于AddTypeapplication/x-httpd-php.php。这告诉Apache将.php文件作为PHP运行。搜索AddType,然后确保有一个PHP条目,并且没有注释

  4. 请确保文件上具有.php扩展名,或者是第3点MIME定义中指定的任何扩展名,否则它将不会作为PHP执行。

  5. 确保您没有使用短标签在PHP文件( )中,默认情况下未在所有服务器上启用 ,并且不鼓励使用它们。使用 代替(或使用short_open_tag=On在php.ini 中启用短标记(如果您有依赖它们的代码)。

  6. 确保您使用的是诸如http://localhost/file.php之类的URL通过Web服务器访问文件,而不是通过本地文件访问file://localhost/www / file.php

最后查看 PHP手册以获取进一步的设置提示

回答2:

php7:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart

回答3:

我在Ubuntu上运行Apache,我的问题是/etc/apache2/mods-available/php5.conf文件缺少此文件:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

我重新添加了它,并且php正确解析了php文件。

回答4:

针对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>

回答5:

我发现了另一个导致此问题的问题,并已解决。我不小心将脚本保存为UTF-16编码。默认情况下,PHP5似乎无法识别16位编码的 标记。

回答6:

我之所以发布此答案,是因为我的Virtualmin / Webmin管理界面认为禁用PHP引擎是个好主意。花了我一段时间才找到解决方案,所以我想与他人分享你们:

此外,请确保检查与该特定主机或虚拟主机相关的网站配置文件中是否没有任何php_admin_value可以关闭PHP,例如:

php_admin_value engine Off

如有疑问,请评论...

# php_admin_value engine Off

然后重新启动您的Web服务器。

回答7:

您只是在浏览器中打开php文件。您必须使用本地主机url打开它。如果您直接从目录打开文件,则在任何情况下都不会执行php代码。

使用:http://locahost/index.phphttp:127.0.0.1/index.php

启用php短代码。在您的情况下,您正在使用 ,这是 的php短代码。默认情况下,禁用PHP短代码。

如果您是ubuntu用户,也请使用:sudoapt-getinstallphp5libapache2-mod-php5php5-mcrypt

回答8:

我知道这听起来很傻...但是很少发生。

检查您是否尝试从

执行php
**http://localhost/info.php**

而不是来自

file:///var/www/info.php

ps>您会注意到,如果您是从shell写的

php info.php 

用代码回答(这意味着php函数)。

回答9:

这再次发生在我身上,服务器正在下载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 

Web服务器现在正在解析php。由于php7.0现在可以像运行php5之前一样运行,因此现在也许需要更新一些网站。哦,很好。

回答10:

我已经通过卸载XAMPP和安装WAMP来解决了这个问题。感谢您的帮助。

回答11:

我在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:

在我的ubuntu 14.04,apache 2.4,php 5.5.9安装上,我尝试在/ var / www / html(默认文档根目录)上使用sample.php,它工作正常。所以问题出在我的虚拟服务器配置上。解决方案是在包含.php的Directory def上包括以下行:

    php_admin_flag engine on

回答13:

我有类似的问题,但就我而言,解决方案是不同的。我保存了php代码的文件名为" somename.html" ,将其更改为" somename.php" 可以正常运行

回答14:

对于运行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

回答15:

使用以下方法检查您为 php 安装的所有软件包:

yum list installed | grep remi

在您的计算机上安装所有相关的 php 软件包,尤其是 php-devel

回答16:

这是在我的.htaccess文件中

DirectoryIndex index.html index.htm

index.html包含PHP代码。默认情况下,PHP不会将扩展名为htm *的文件作为PHP代码进行处理。

您可以通过在.htaccess中添加以下内容来覆盖它:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

回答17:

确保脚本包含

<?php

在应执行的代码之前。在 php之间应该没有空格。

回答18:

我认为它显示的是代码而不是结果的问题是它不会发送到本地主机。重新检查您要输入的地址。您要转到本地文件目录还是本地主机。

从您发送的屏幕截图中将其发送到您的计算机,而不是本地主机。

" file:///"它应该是" localhost /"

回答19:

重新安装mcrypt模块对我有用。

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt

回答20:

我遇到了一种情况,我不小心开始在根目录下解压缩我的文件目录。它从我的文件文件夹中添加了.htaccess文件,该文件将阻止所有php

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

最底下检查根目录下的.htaccess文件。

回答21:

如果您具有这样的配置:

<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

对我有用

回答22:

如果您使用的是Apache 2.4,请

AddTypeapplication/x-httpd-php.php添加到您的httpd.conf文件中。

回答23:

仅花费了数小时的时间尝试使 PHP 5与Windows 10上的Apache 2.4一起运行。最后对我来说,这是 httpd.conf LoadModule中的错字。提请注意通过"> 最后一个答案"中的内容以及确切的模块路径 denny2018 的此apachelounge线程。谢谢!

两夜后,我发现...我的目录写为c:(小写)

我有LoadModulephp5_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 。在Apache 2.4的 httpd.conf 中有LoadModule

LoadModule php7_module "C:/php/php7apache2_4.dll"

当前 php手册已出现 c:/php/php5apache2.dll 当然需要调整。

回答24:

就我而言(Apache / 2.4.34),

取消注释特定模块后

" LoadModule php7_module libexec / apache2 / libphp7.so"

来自

" / etc / apache2 / httpd.conf"

我的问题不见了。

回答25:

如果我们在同一页面上,请执行以下操作

sudoapt-getinstallphp-y sudoapt-getinstallphp-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm}-y

要在Apache2中启用PHP 7.2 FPM,请执行以下操作:

a2enmodproxy_fcgisetenvif

a2enconfphp7.2-fpm

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

在那之后,我遇到了上述问题。还有类似的问题,例如

>

我不知道为什么,但是它只发生在/var/www/html/根文件夹中的.php文件中。子目录一切正常。 (例如wordpress和phpmyadmin工作正常)

这是我的解决方案。我决定启用php模块。所以我运行了这个命令:

a2enmodphp7.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:

systemctlrestartapache2

然后启用php7.2(我的安装版本):

sudoa2enmodphp7.2

现在一切正常。

回答26:

您放置在/ var / www / html /中的文件应具有.php例如example.php(如果它是example,则它不起作用,但是如果将其更改为example.php,则它可以工作。)

回到顶部