当我从命令行运行基本的“hello world”php脚本时,运行命令php test.php
,它会返回一个有效的html页面。但是,当我尝试通过浏览器访问它时,我得到的是php脚本的文本,而不是有效的html。
php脚本“test.php”如下:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
echo '<p>Hello World</p>';
?>
</body>
</html>
我在 Raspbian 上运行 Apache。
答案1
PHP 可能在不同的操作模式下运行。
当您从命令提示符运行它时,它可以是控制台解释器,也可以作为 CGI 运行,也可以作为服务运行php-fpm
,它可以作为 apache 的模块运行,或者它本身就是一个 Web 服务器。
在浏览器中运行 php 脚本的最简单方法是使用其嵌入式 Web 服务器。
只需运行php -S ip.ip.ip.ip:port -t /path/to/directory/where/php/files/lives
替换ip.ip.ip.ip
为分配给 Raspberry Pi 的 IP 地址(从 获取ifconfig
),然后替换port
为您希望嵌入式服务器监听连接的端口(设为 8000)。如果您将浏览器指向,http://ip.ip.ip.ip:port/your-script.php
您将获得所需的内容,而无需运行 apache。
如果您仍然想通过 apache 运行 php,您需要弄清楚如何安装它。
检查 php 是否应作为 apache 模块运行的步骤:
运行apache2ctl -M
并查看 php 模块是否已加载。如果没有,则需要启用它sudo a2enmod phpX
(其中 X 是 php 版本)并apache
使用命令重新加载:
sudo service apache2 reload
。
检查 php 是否应作为 php-fpm 服务运行的步骤:
如果您将 php 安装为php-fpm
服务,则需要检查它是否正在运行:
ps aux | grep 'php-fpm'
如果它正在运行,则需要配置 apache 实例以作为代理运行。使用官方Apache 文档进行设置。与 php 作为 apache 模块运行的情况相比,设置更为复杂,但它具有生产环境中通常需要的许多优点。
检查 php 是否应该以下列方式运行的步骤php-cgi
(在此模式下,每次有人请求 php 文件时,apache 都会调用 php):
检查 apache 的配置文件是否存在以下设置:
ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /local-bin/php-cgi
答案2
为了补充用户 Alex 的回答,还要确保libapache2-mod-php5
安装了该软件包。如果没有安装上述软件包,Apache 将无法运行。要安装,请运行
sudo apt install libapache2-mod-php5
通过安装此软件包,它还将自动将 php 添加到 Apache 要加载的模块中。