我正在虚拟机上运行Ubuntu服务器,以testing不同的networking论坛解决scheme。 我已经build立了一个〜/ public_html /可以通过apache2 web服务器访问,而且工作正常。
但是,当我浏览器上的一个.php文件(使用我的虚拟机的IP地址/〜用户名/ phpfile.php)它不会显示它应该。 相反,它提供了保存到文件/问什么程序来打开它。 有趣的是,虽然该对话框确实认识到它是一个PHP文件。
我在系统上安装了以下版本的php:
PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
和下面的服务器:
Server version: Apache/2.2.14 (Ubuntu) Server built: Nov 18 2010 21:19:09
如果有人知道什么可能导致这个/潜在的解决scheme,这将使我非常高兴:)
编辑:结果文件这种行为只是在〜/ public_html /目录中的文件明显。 / var / www /中的所有php文件都可以正常工作。
奖品是否可以解释为什么? :D(奖品我只是说做得好,恐怕没有实际的奖品。)
您可能只有当前安装的cli版本的PHP
sudo apt-get install php5
并重新启动Apache
sudo apache2ctl restart 。
你也可以检查PHP模块是否被加载到Apache中
sudo apache2ctl -M
如果模块被加载,那么它应该显示类似的东西
Loaded Modules: ... php5_module (shared) ... Syntax OK
把这个添加到你的apacheconfiguration中
AddType application/x-httpd-php .php
你需要configurationapache,以便在请求.php文件的时候启动php解释器,而不是仅仅返回文件的内容。
这需要在httpd.conf中为相关目录完成。 它看起来像这样:
# Use for PHP 5.x: LoadModule php5_module modules/libphp5.so AddHandler php5-script php # Add index.php to your DirectoryIndex line: DirectoryIndex index.html index.php AddType text/html php
我在用户的public_html目录中遇到了同样的问题,我发现在/etc/apache2/mods-available/php5.conf文件中包含了一些注释行,它们是:
# 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.
我做了什么,并重新启动Apache,问题已经消失。
检查AddType行的.htaccess 。 我有一个自定义的AddType导致不良的内容types。 Firefox帮助我debugging了这个问题,但是你也可以使用wget 。
容易忘记,但这种情况发生的一个常见方式是忘记打开和closures<?php ?>标签。
我最近得到了这个问题,并消除了这个线程中的所有其他原因后,我发现mod_php5扩展(在我的系统在/usr/lib64/apache2/mod_php5.so )没有执行pemitions。
chmoding之后,它工作。