1

我在 Xubuntu 16.04 x64 和 apache2 上使用 phpbrew 时遇到问题。我在 xubuntu 14.04 上使用它没有问题,但现在我真的被卡住了:/ 我将尝试用所有需要的信息来解释它。

在使用该命令行安装每个版本期间一切顺利

phpbrew install 7.0.16 +default +mysql +pdo +apxs2=/usr/bin/apxs2 +mb

当我切换 php 版本时没问题,当我这样做时我看到了正确的版本

php -v

但我可以看到它只改变了 php 的 CLI 版本

PHP 7.0.16 (cli) (built: Feb 28 2017 17:25:51) ( NTS )

如果我查看 .phpbrew/php 我可以看到我安装的每个 php 版本的文件夹,当我查看 /etc/apache2/mods-available/ 时,我有 phpX.X.load 指向相应的libphpX.X.XX.so 在文件夹 /usr/lib/apache2/modules/ 中。所有 libphpX.X.XX.so 都存在于该文件夹中。当我重新启动 apache 时,我没有任何错误。

我确切地说我已经安装了具有该要求的 phpbrew ( https://coderwall.com/p/hguzxa/phpbrew-on-ubuntu-16-04-php7 )

所以现在我只是在 index.html 文件中尝试那个简单的 php 行

<?php echo '<h1>Hello, world!</h1>';?>

但似乎 apache 无法解释 php,因为它看起来像那样

Hello, world!';?>

最后,当我查看文件 /var/log/apache2/error.log 时,里面没有错误信息。

如果您能帮助我,请提前感谢您!

4

1 回答 1

1

您的浏览器为您打印

Hello, world!';?>

因为您的 Apache 服务器配置错误,无法处理 PHP 脚本。浏览器的这种行为让您感到困惑,因为您在字符串中使用了有效的 HTML 标记。试着打印这个字符串

<?php echo 'Hello, world!';?>

并且浏览器窗口中没有任何内容。但是,如果您打开页面源代码,您会看到您的 PHP 字符串作为原始值进入 DOM 文档,没有经过处理的 PHP 标记。

要解决此信息,只需尝试为 Apache 添加缺少的配置:

touch /etc/apache2/conf-available/php.conf

将下一个内容放在这个文件中

<IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>
</IfModule>

<IfModule mod_php7.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

<IfModule mod_php.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>
</IfModule>

现在,您通过配置告诉 Apache 它如何处理 PHP 脚本。所以,现在只需运行

a2enconf php
systemctl restart apache2.service

您可以查看 Apache 运行状态

systemctl status apache2.service

现在,不要忘记检查您的测试脚本是否命名为something-to-test.php(而不是 html)并在您的浏览器中运行它。

享受您处理过的 PHP 脚本和愉快的编码;)

于 2018-01-21T09:35:51.633 回答