PHP 在命令行上运行,但在浏览器中不运行

PHP 在命令行上运行,但在浏览器中不运行

当我从命令行运行基本的“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 要加载的模块中。

相关内容