【发布时间】:2017-10-21 13:14:47
【问题描述】:
我已经在我的 raspeberry pi 3 上安装了 apache2 和 php 5,使用如下:
apt-get -y install apache2
apt-get -y install php5 libapache2-mod-php5
当我通过 IP 地址将浏览器指向 pi 时,我得到“它可以工作”的 apache 页面,所以看起来一切都很好……直到我尝试通过 http://192.168.1.102/test.php 访问一个简单的 .php 文件。
测试 .php 看起来像这样:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>
如上所述,当我将浏览器指向该文件时,它会在文本编辑器中打开该文件,而不是执行它。
跑步 a2enmod php5 返回“模块 php5 已启用”
test.php 在 var/www/html
我查看了PHP code is not being executed, instead code shows on the page,答案并没有解决我的问题。主要是,最流行/相关的答案是我编辑 httpd.conf,它在我的安装中不存在。
以下是该帖子最受欢迎的答案的逐点注释:
- 确保 PHP 已正确安装并运行。这可能听起来很傻,但你永远不会知道。一个简单的检查方法是从命令行运行 php -v 并查看是否返回版本信息或任何错误。
pi@raspberrypi:/ $ php -v
PHP 5.6.30-0+deb8u1 (cli) (built: Apr 14 2017 16:20:58)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
- 确保 PHP 模块在 Apache 的 httpd.conf 中已列出且未注释。这应该类似于文件中的 LoadModule php5_module "c:/php/php5apache2_2.dll"。搜索LoadModule php,确保前面没有注释(;)。
在目录/etc/apache2下,在文件apache2.conf中:
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
在/etc/apache2/mods-enabled目录下,文件php5.load中:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
- 确保 Apache 的 httpd.conf 文件中包含 PHP MIME 类型。这应该类似于 AddType application/x-httpd-php .php。这告诉 Apache 将 .php 文件作为 PHP 运行。搜索 AddType,然后确保有一个 PHP 条目,并且它没有被注释。
在/ect/apache2/mods-enabled目录下,文件php5.conf中:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
- 确保您的文件具有 .php 扩展名,或者在第 3 点 MIME 定义中指定的任何扩展名,否则它将不会作为 PHP 执行。
确实如此。
- 确保您没有在 PHP 文件中使用短标签 (
<?),默认情况下,这些标签已弃用,并非在所有服务器上启用。请改用<?php(或者如果您有依赖它们的代码,则使用short_open_tag=On 在您的php.ini 中启用短标签)。
仔细检查了这个。
- 确保您通过网络服务器访问您的文件,使用像http://localhost/file.php 这样的 URL,而不是通过本地文件访问 file://localhost/www/file.php
我正在使用 http 访问。尝试了本地(同一台计算机)和远程(我网络上的计算机),结果相同。
不确定还有哪些其他信息值得关注,但我在网上搜索了所有信息,但无法找到可行的解决方案(大多数情况下会按照上述方式进行安装)。我什至完全清除并重新安装。
提前感谢您的帮助。
【问题讨论】:
-
在发布这个问题之前,我不止一次浏览过该帖子。也许我错过了什么,但没有一个解决方案适合我的问题。
-
可能有一个 http.conf 被命名为别的东西。
-
apache2.conf 和 httpd.conf 不一样(据我所知)。其他安装中 httpd.conf 中的某些功能已分发到多个目录中的其他 .conf 文件中。这篇 help.ubuntu.com/lts/serverguide/httpd.html 和其他具有类似信息的帖子,以及 Apache Debian 默认页面是我得出结论的基础。我已经编辑了我的原始帖子,以显示与类似帖子的逐点比较。