Apache正在下载PHP文件,而不是显示它们
OS和服务器信息:
- CentOS 6.4(最终)
- Apache 2.2.15
- PHP 5.5.1
我以前有安装PHP 5.3.x,但决定升级。 我首先卸载了PHP 5.3.x,然后安装了PHP 5.5.1,但安装完成后,Apache没有parsingPHP文件,只是下载了它们。 我在这里检查了类似的问题在stackoverflow,但他们都没有帮助我到目前为止。
为了logging,我在我的httpd.conf和php.conf中应该使php工作,但不要:
AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml AddType application/x-httpd-php-source .phps AddHandler php5-script .php
我真的很感激任何帮助。 谢谢。
编辑:
我在php.conf中有这些行
<IfModule !worker.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule>
编辑:
通过删除
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
Apache不再下载文件。 现在apache显示的是源代码,但不是全部。 我补充说
AddType text/html .php
但没有运气。
正确的AddType for php是application / x-httpd-php
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
还要确保你的php模块已经加载
LoadModule php5_module modules/mod_php55.so
当你configurationapache的时候,试着从另一个浏览器中查看页面 – 我已经有一段时间了,chrome顽固地caching了结果,并且在另一个浏览器中继续下载源代码,这很好。
经过艰苦的努力,我终于解决了这个问题。
如果提示您下载一个.php
文件而不是执行它,那么这里是完美的解决scheme:我假设您已经安装了PHP5,但仍然出现这个错误。
$ sudo su $ a2enmod php5
就是这个。
但是,如果您仍然收到错误:
Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it
然后执行以下操作:
发现文件不应该存储在mods-enabled
,而应该存储在mods-available
。 然后应该在mods-enabled中创build一个符号链接,指向保存在mods-available中的文件。
首先删除原件:
$ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/
然后创build符号链接:
$ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf
我希望你的问题解决了。
我今天遇到这个问题,没有一个解决scheme为我工作。 所以这是另一个可能的原因:
如果你有类似的东西
AddHandler x-mapp-php6 .php3 .php4 .php .phtml
在您的web内容文件夹的.htaccess
文件中,它可能导致您的PHP脚本停止工作。 在我的情况下,服务器不知道x-mapp-php6
types,因为.htaccess
文件是我从一个不同的web主机,当我转移的网站内容导入的东西。
只是从.htaccess
文件中删除AddHandler
行解决了我。
请看看你的addtype指令。
它在我看来像Apache告诉浏览器,它正在发送文件types的应用程序/ PHP的脚本与扩展名如.php5。 事实上,Apache应该告诉浏览器脚本输出的是text / html。
请试试这个:
AddType text/html .php
关于上面的build议,你应该告诉浏览器你正在输出一个PHP脚本:这对我来说似乎是一个不寻常的想法。 我search了一下,发现在网上有很多关于它的讨论。 显然,在某些情况下,您可能想要说您正在发送一个PHP脚本(即使Apache应该执行该脚本并发出text / html),还有一些情况是浏览器根本无法识别该特定的Mimetypes。
清理浏览器caching总是一个好主意。
如果有帮助的话,可以从运行CentOS 5.9的服务器获得/etc/httpd/conf.d/php.conf文件的副本:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # <IfModule prefork.c> LoadModule php5_module modules/libphp5.so </IfModule> <IfModule worker.c> LoadModule php5_module modules/libphp5-zts.so </IfModule> # # Cause the PHP interpreter to handle files with a .php extension. # AddHandler php5-script .php AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
这可能是由于您的PHP所需的模块丢失。 假设你已经安装了php7,使用search可用的php7模块
sudo apt-cache search php7-*
上面的命令将列出所有可用的PHP7模块进行安装。 你可以开始安装模块,
sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
我有同样的问题。 Apache不从一个特定的网站加载PHP文件,只是下载它。 我阅读这篇文章和答案,我已经看到我已经把这一行到.htaccess文件的最后一个地方:
AddHandler x-mapp-php5.5 .php
我已经评论它,一切工作正常。
谢谢大家 !!!
我之前有一个类似的问题,从5.3升级到5.4之后。 但我的设置看起来有点不同,因为我正在运行Debian并使用fcgid来服务PHP页面,而不是PHP5 apache / cgi模块。 所以升级后,它也安装了php5_cgi,与我的fcgid设置相冲突,不再执行PHP文件。
我必须禁用Apache模块并重新启动Apache
a2dismod php5_cgi /etc/init.d/apache2 restart
一旦php5_cgi模块完成,fcgid就能够再次提供PHP页面。
如果你的.htaccess有这样的东西… AddHandler应用程序/ x-httpd-php53 .php .php5 .php4 .php3然后评论它,并再次尝试刷新这为我工作…
我有类似的症状,但另一种解决scheme:在/etc/apache2/mods-enabled/php5.conf有一个有用的build议,在我的评论,我遵循:
# To re-enable php in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it.
我花了两天的时间跟踪这个,发现我把我的PHP脚本放在错误的目录中。
在我的标准Ubuntu安装,我把脚本放在/var/www
。 他们应该在/var/www/html
。
我刚刚开始PHP的工作,所以我不知道我的解决scheme是否涉及您所经历的版本更改。
这解决了我的问题(我已经安装了php7):
sudo apt-get install libapache2-mod-php7.0
sudo服务apache2重启
我有这个问题。 事实certificate,我已经安装了nginx和apache,并自动启动。 问题在于nginx绑定了http端口,阻止了apache的启动。
从旧版本升级php5时,我有一个类似的问题到5.5.9,这是与Mint 17安装的版本。
我正在本地networking上的一台机器上运行LAMP安装程序,在将这些更改上载到实际的实时服务器之前,我使用该程序预览对网站的更改。 所以我保持一个完美的本地镜像的实际网站。
升级之后,在实际站点上运行并完美显示的文件将不会显示,或只会在本地机器上显示html。 PHP没有被parsing。 phpinfo()命令工作,所以我知道PHP是否在其他方面工作。 日志生成没有错误。 查看页面源代码显示了我真正的php代码。
我已经构build了一个包含以下代码的test.php页面:
<?php phpinfo(); ?>
这工作。 然后我发现当我把<?php
改成<?
该命令不再有效。 我所有的网站使用<?
而不是<?php
这可能不是理想的,但这是现实。 我通过转到/ etc / php5 / apache2来解决这个问题,search“short_open_tag”并将值从Off更改为On。
如果以上都不行,
尝试发表评论
SetHandler ....
并重新启动Apache使用
/etc/init.d/httpd restart
它应该工作!
PHP56
vim /etc/httpd/conf/httpd.conf
LoadModule php5_module libexec/apache/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
我有这样的问题。 这是我如何解决它。 安装完Apache之后,我使用这个命令安装了PHP 。
sudo apt-get install php libapache2-mod-php
它正确执行,但我从Apache请求.php文件,它提供不执行PHP脚本。
然后我检查PHP是否启用。
$ cd /etc/apache2 $ ls -l mods-*/*php*
但没有显示任何结果。 我检查已安装的PHP软件包。
$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
安装到我的电脑的不同types的PHP版本。 然后我使用apt-get purge从我之前的列表中删除一些PHP包。
sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
我重新安装PHP
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
validationPHP模块是否已加载
$ a2query -m php7.0
如果未启用:
$ sudo a2enmod php7.0
重新启动Apache服务器
$ sudo systemctl restart apache2
最后,我在Apache上检查PHP进程
创build一个空文件
sudo vim /var/www/html/info.php
将此内容添加到info.php并保存。
<?php phpinfo(); ?>
检查浏览器:
HTTP://localhost/info.php
它显示正确。我认为这将有助于任何人。
如果你的.htaccess有这样的东西
AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm