PHP代码没有被执行,但是代码显示在浏览器源代码中

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

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

有人有什么建议吗?

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

<强>编辑: 代码. .:< / p >

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

打印

846110 次浏览

听起来你的配置好像有问题,下面是一些你可以检查的东西:

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

  2. 确保PHP模块在Apache的httpd.conf中列出了和未注释的。这应该是文件中的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文件(<?)中使用短标记,这些在所有服务器上默认不启用,不鼓励使用它们。使用<?php代替(或在php.ini中启用短标记,如果你有依赖于它们的代码)。

  6. 确保你在你的web服务器上使用像http://localhost/file.php这样的URL访问你的文件,而不是通过本地文件访问file://localhost/www/file.php

最后检查PHP手册的进一步设置技巧

我已经通过卸载XAMPP解决了这个问题,并安装WAMP。 谢谢你的帮助。

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

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

我把它添加回来,php正确地解析php文件。

我发现了另一个导致这个问题的问题,并且已经解决了它。我不小心将脚本保存为UTF-16编码。在默认情况下,PHP5似乎不能识别16位编码的<?php标记。

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

同时,确保你的网站配置文件中没有任何与这个特定主机或虚拟主机相关的php_admin_value在它们中关闭PHP,就像这样:

php_admin_value engine Off

有疑问的时候,评论一下…

# php_admin_value engine Off

并重新启动您的web服务器。

检查你为php安装的所有包,使用:

yum list installed | grep remi

在你的机器上安装所有相关的php包,尤其是php-devel

我知道这听起来很傻……但这种情况很少发生。

检查您是否试图从

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

而不是来自

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

Ps >你可以注意到如果你从shell写

php info.php

它回答的代码(它意味着PHP函数)..

我有类似的问题,但在我的情况下,解决方案是不同的。 我保存php代码的文件名为“somename.html” 将其更改为“somename.php”工作良好

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

    php_admin_flag engine on

我认为问题是,它显示的代码而不是结果是,它不会去本地主机。重新检查你要去的地址。是到本地文件目录还是到本地主机。

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

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

这种情况又发生在我身上,服务器下载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之前的地方。哦。

注意,对于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>

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

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

我有一个案例,我不小心开始解压我的文件目录在根。它从我的文件文件夹中添加了。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文件。

这是我的。htaccess

DirectoryIndex index.html index.htm

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

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

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

你只是把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

php7:

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

为LAMP运行php的新设置 编辑/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

如果你有这样的配置:

<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

这对我很有用

如果你使用Apache 2.4,在httpd.conf文件中添加AddType application/x-httpd-php .php

确保脚本包含

<?php

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

我在High Sierra (OS X 10.13.5)附带的php 7.1上遇到了这个问题,通过以下更改编辑/etc/apache2/httpd.conf有所帮助:

  1. 取消注释该行

    LoadModule php7_module libexec/apache2/libphp7.so
    
  2. Paste following at the end

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

刚刚花了几个小时试图得到PHP 5与Windows 10上的Apache 2.4一起运行。最后对我来说,这是一个拼写错误在httpd . conf LoadModule。注意通过最后的答案在这个apachelounge线程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。这里读取了Apache 2.4的httpd . conf中的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 /输入/ httpd . conf”

我的问题消失了。

如果我们在同一页做下面

< p > sudo apt-get install php -y sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm} -y < / p >

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

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

更新2:Apache下载。php文件而不是渲染

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

我不知道为什么,但它只发生在我的。php文件在/var/www/html/根文件夹。对于子目录来说一切正常。(例如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

现在一切都很好。

导致此问题的另一个可能原因可能是您试图在“用户目录”中运行脚本。UserDir模块。在用户目录下运行PHP脚本默认是禁用的。如果脚本在你的主文件夹的public_html目录中,并且你试图从http://localhost/~your_username访问它,你就会遇到这个问题。

要解决这个问题,打开/etc/apache2/mods-enabled/php7.2.conf。必须注释或删除底部的标记块

<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>

尝试重新启动apache服务器。这就是我犯的错误——在安装php后忘记重新启动服务器!

service httpd restart

在我的情况下,php模块没有加载。试试这个:

  1. 检查加载了哪些模块:apache2ctl -M。寻找像php7_module (shared)这样的模块
  2. 如果没有列出php模块,则尝试加载与您的php版本对应的模块。在我的例子中,php包是libapache2-mod-php7.3。所以我这样做了:a2enmod php7.3,问题解决了。

对于php7.3。*,您可以尝试安装这些模块。这对我很管用。

sudo apt-get install libapache2-mod-php7.3


sudo service apache2 restart

使用Debian 10安装Apache + php7测试的最简单方法:

apt-get update -y
apt-get install apache2 php7.0 libapache2-mod-php  -y
sudo service apache2 restart

在尝试了以上所有方法都没有效果之后,考虑重新启动你的电脑。解决了我的。

PHP 8, Centos 7, Apache 2, Remi Repo

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

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

在花了很长时间寻找哪个配置设置没有更新之后,我找到了这个:

/etc/httpd/conf.d

<IfModule  mod_php7.c>

需要更改为:

<IfModule  mod_php.c>

还有其他地方,你可能会看到mod_php7检查,可能会更新到mod_php变体,但这个肯定为我修复了它。

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

在覆盆子64位上安装phpmyadmin是可能的,在我的情况下甚至并不困难。
我正在运行几台安装了openSuse Tumbleweed和一些覆盆子的惠普笔记本电脑。
在最新的覆盆子3 B + I 64bit覆盆子buster light, kde等离子桌面。
Linux raspi10 5.10.60-v8+ #1449 SMP PREEMPT Wed Aug 25 15:01:33 BST 2021 aarch64 GNU/Linux
我使用nginx 1.14.2 fastcgi(不使用'sock')和php 8.0.10 (php-fpm)。
我先下载了“作曲家”。(使用apt或aptitude)。 之后返回https://docs.phpmyadmin.net/en/latest/setup.html
查找shell命令

composer create-project phpmyadmin/phpmyadmin
它将在当前目录中安装一个完整的目录'phpmyadmin'。
移动到/var/lib/,并根据nginx.conf
中的设置设置user:group权限 在我的例子中:
chown -R www-data:www-data /var/lib/phpmyadmin < / p > 创建一个符号链接到/srv/www/public或/var/www/html或任何你的服务器正在寻找的东西。
您可以添加第二个名为phpMyAdmin的符号链接到phpMyAdmin
请确保nginx.conf中的根指令已相应设置 我的nginx配置在我所有的机器上(几乎)相同。 它现在非常紧凑。
这是最简单的方法。所有进一步的服务器和功能可以稍后添加。
/etc/nginx/sites-enabled没有条目 /etc/nginx/vhosts.d
从php.ini中的一个池开始。为了配置它,谷歌一点和测试

.检查php-fpm的状态

在尝试了所有方法之后,我想出了这个解决方案


当默认情况下PHP 7.0 FPM未启用时,将出现此错误。

要在Apache2中启用PHP 7.0 FPM,运行:

 sudo 2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
systemctl restart apache2

如果您使用的是php7.4,在上面的命令中输入7.4而不是7.0。

今天,PHP自带一个内置的web服务器,所以不需要进一步的安装,因此呈现PHP文件用于开发使用的最简单的方法之一是:

  1. 打开终端,切换到包含web应用程序的源目录(其主文件通常称为index.php)。
  2. 在这个目录中,键入php -S localhost:7777(端口号是任意选择的)。
  3. 在地址栏中打开类型为localhost:7777的web浏览器,将呈现所需的网页。

如果您已经完成了访问,请返回终端并按CTRL-C关闭开发服务器。

此信息也通过在终端中调用php --help来给出,进一步的内容在https://www.php.net/manual/en/features.commandline.webserver.php中给出