3

首先让我先说是的,我已经在谷歌和stackoverflow中搜索过这个,我找到了很多答案并尝试了所有答案。在这一点上,我相信我唯一的资源是自己发布问题,即使场景听起来重复,请善意地尝试提供帮助。

这种情况非常基本,在 Ubuntu 桌面 10.04 上,我根据本指南及其衍生产品在这里通过 Synaptic 和 Php5 设置了 apache 。此时,如果我在命令行上调用一个 php 脚本,它就可以工作,例如:

  php test.php

输出我的 hello world 没有任何问题。但是,如果我去 Firefox 并指向 test.php,它将显示 403 错误 Forbidden ...

我已将 /var/、/var/www/ 和 /var/www/test.php 的所有权更改为我能想到的每个变量(www-data [apache 以此用户身份运行]、purefan [我的普通用户]、root ) 没什么区别,我也改了好几次权限 777、0777(为了安全起见)、644、755,没变。从 CLI 我将 phpinfo 放入一个文件并将其添加到此处

如果我没记错的话,当 Apache 调用 php 解释器时,问题正在发生,当我访问http://localhost/index.php时,它会显示 apache 的默认“它可以工作!” 页面,但是如果我将 php 内容添加到该文件中,它只会被忽略,但不会显示任何错误(还检查了错误日志和系统日志)。

因此,如果您有任何建议,请告诉我,这不是生死攸关的事情,而是真的想使用 worker 而不是 prefork 进行设置。

感谢您的时间

4

5 回答 5

6

我遇到了完全相同的问题..首先我在虚拟机下成功安装了带有worker mpm的apache2和带有fastcgi的php5..但是当我在生产主机上尝试它(使用完全相同的过程)时,它给了我禁止的错误。

经过大量搜索,我终于让它工作了。在这里您可以找到我为使其正常工作所做的步骤:

这些是我安装的软件包,用于使用 mpm-worker 获取 apache2 和使用 fastcgi 获取 php5:

  • 阿帕奇2
  • apache2-mpm-worker
  • php5-cli
  • php5-cgi
  • php5-常用
  • libapache2-mod-fcgid

然后你需要创建一个文件来告诉apache如何使用php文件。我在 /etc/apache2/conf.d 目录下创建了一个名为 php.conf 的目录。这应该是内容:

<Directory /usr/share>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options ExecCGI FollowSymlinks Indexes
</Directory>

<Files ~ (\.php)>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options  ExecCGI
    allow from all
</Files>

就这样。显然,确保文件的用户、组和权限是正确的(用户和组的 www-data 和文件和文件夹的 644 和 755)。

我的失败是没有添加<Files></Files>标签。添加后,我终于可以访问该网站了。在<Files>标签下进行 php 配置之前,我在虚拟主机中添加了这些行,在<Directory>我的主机标签下。像这样:

<Directory /var/www/website/>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options  ExecCGI Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

但这不起作用!在我的虚拟机中,我正好有这几行,而且效果很好……所以,也许我的解决方案也适合你。

我希望这会对某人有所帮助:)

编辑:这是挽救我生命的论坛主题:http: //forum.parallels.com/showthread.php?t=85413

于 2012-05-11T19:28:10.523 回答
3

如果你没有在你的 apache httpd.conf 中启用 ExecCGI,你会得到 PHP only 禁止错误

Options Indexes FollowSymLinks **ExecCGI**

AllowOverride None
Require all granted

于 2016-03-17T07:27:17.887 回答
1

嗯,你安装了 Apache2 PHP 模块吗?

听起来您已经安装了 php5-cli 但没有安装 apache2 模块。

页面上,您找到了一个简短的示例。也许我可以帮助你。

于 2010-10-25T09:10:11.317 回答
0

这真的让我很困惑。有完全相同的问题。以这种方式解决它:我添加了 .htaccess 文件,其中包含以下内容:

# Follow symbolic links in this directory.
Options +FollowSymLinks

该文件夹下的所有内容突然开始正常工作。

于 2013-02-12T21:11:52.187 回答
0

添加Indexes和标记解决了我的问题FollowSymLinksFiles

<Files ~ "\.php$>"
  AddHandler fcgid-script .php
  FcgidWrapper "c:/php/php-cgi.exe" .php
  Options ExecCGI Indexes FollowSymLinks
  allow from all
</Files>
于 2019-09-16T19:28:22.853 回答