我正在尝试在项目上执行某些PHP代码(使用Dreamweaver),但是该代码未在运行。
当我检查源代码时,PHP代码显示为HTML标记(我可以在源代码中看到它)。 Apache正常运行(我正在使用XAMPP),PHP页面已正确打开,但PHP代码未执行。
有人对发生的事情有建议吗?
注意:该文件已被命名为filename.php
编辑:代码...:
<?
include_once("/code/configs.php");
?>
听起来好像您的配置有问题,这是您可以检查的几件事:
确保已正确安装并运行PHP。这听起来可能很愚蠢,但您永远不会知道。一种简单的检查方法是从命令行运行php-v
并查看是否返回版本信息或任何错误。
确保在Apache的httpd.conf中列出PHP模块且未注释。这应该类似于LoadModulephp5_module"c:/php/php5apache2_2.dll"
。搜索LoadModulephp
,并确保它前面没有注释(;
)。
确保Apache的httpd.conf文件具有PHP MIME类型。这应该类似于AddTypeapplication/x-httpd-php.php
。这告诉Apache将.php
文件作为PHP运行。搜索AddType,然后确保有一个PHP条目,并且没有注释。
请确保文件上具有.php
扩展名,或者是第3点MIME定义中指定的任何扩展名,否则它将不会作为PHP执行。
确保您没有使用短标签在PHP文件(
)中,默认情况下未在所有服务器上启用 ,并且不鼓励使用它们。使用
代替(或使用
short_open_tag=On
在php.ini 中启用短标记(如果您有依赖它们的代码)。
-
确保您使用的是诸如http://localhost/file.php
之类的URL通过Web服务器访问文件,而不是通过本地文件访问file://localhost/www / file.php
最后查看 PHP手册以获取进一步的设置提示。
php7:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.0-fpm
sudo service apache2 restart
我在Ubuntu上运行Apache,我的问题是/etc/apache2/mods-available/php5.conf
文件缺少此文件:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
我重新添加了它,并且php正确解析了php文件。
针对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>
我发现了另一个导致此问题的问题,并已解决。我不小心将脚本保存为UTF-16
编码。默认情况下,PHP5似乎无法识别16位编码的
标记。
我之所以发布此答案,是因为我的Virtualmin / Webmin管理界面认为禁用PHP引擎是个好主意。花了我一段时间才找到解决方案,所以我想与他人分享你们:
此外,请确保检查与该特定主机或虚拟主机相关的网站配置文件中是否没有任何php_admin_value可以关闭PHP,例如:
php_admin_value engine Off
如有疑问,请评论...
# php_admin_value engine Off
然后重新启动您的Web服务器。
您只是在浏览器中打开php文件。您必须使用本地主机url打开它。如果您直接从目录打开文件,则在任何情况下都不会执行php代码。
使用:http://locahost/index.php
或http:127.0.0.1/index.php
启用php短代码。在您的情况下,您正在使用
,这是
的php短代码。默认情况下,禁用PHP短代码。
如果您是ubuntu用户,也请使用:sudoapt-getinstallphp5libapache2-mod-php5php5-mcrypt
。
我知道这听起来很傻...但是很少发生。
检查您是否尝试从
执行php**http://localhost/info.php**
而不是来自
file:///var/www/info.php
ps>您会注意到,如果您是从shell写的
php info.php
用代码回答(这意味着php函数)。
这再次发生在我身上,服务器正在下载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之前一样运行,因此现在也许需要更新一些网站。哦,很好。
我已经通过卸载XAMPP和安装WAMP来解决了这个问题。感谢您的帮助。
我在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>
在我的ubuntu 14.04,apache 2.4,php 5.5.9安装上,我尝试在/ var / www / html(默认文档根目录)上使用sample.php,它工作正常。所以问题出在我的虚拟服务器配置上。解决方案是在包含.php的Directory def上包括以下行:
php_admin_flag engine on
对于运行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
使用以下方法检查您为 php 安装的所有软件包:
yum list installed | grep remi
在您的计算机上安装所有相关的 php 软件包,尤其是 php-devel 。
这是在我的.htaccess文件中
DirectoryIndex index.html index.htm
index.html包含PHP代码。默认情况下,PHP不会将扩展名为htm *的文件作为PHP代码进行处理。
您可以通过在.htaccess中添加以下内容来覆盖它:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
确保脚本包含
<?php
在应执行的代码之前。在
和
php
之间应该没有空格。
我认为它显示的是代码而不是结果的问题是它不会发送到本地主机。重新检查您要输入的地址。您要转到本地文件目录还是本地主机。
从您发送的屏幕截图中将其发送到您的计算机,而不是本地主机。
" file:///"它应该是" localhost /"
重新安装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文件。
如果您具有这样的配置:
<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
对我有用
将AddTypeapplication/x-httpd-php.php
添加到您的httpd.conf文件中。
仅花费了数小时的时间尝试使 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
当然需要调整。
就我而言(Apache / 2.4.34),
取消注释特定模块后
" LoadModule php7_module libexec / apache2 / libphp7.so"
来自
" / etc / apache2 / httpd.conf"
我的问题不见了。
如果我们在同一页面上,请执行以下操作
sudoapt-getinstallphp-y
sudoapt-getinstallphp-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm}-y
要在Apache2中启用PHP 7.2 FPM,请执行以下操作:
a2enmodproxy_fcgisetenvif
a2enconfphp7.2-fpm
在那之后,我遇到了上述问题。还有类似的问题,例如此。
>我不知道为什么,但是它只发生在/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
现在一切正常。
您放置在/ var / www / html /中的文件应具有.php例如example.php(如果它是example,则它不起作用,但是如果将其更改为example.php,则它可以工作。)