使用 Apache 通过 CGI 运行 PHP 脚本...怎么样?

使用 Apache 通过 CGI 运行 PHP 脚本...怎么样?

我们当前的设置是使用 Apache 提供的 PHP 脚本mod_php。我们刚刚开发了一个新脚本,需要通过 CGI(用于pcntl分叉一些进程)而不是 来运行mod_php。有人能给我一个示例配置吗?理想情况下,我们可以让mod_php除这个脚本之外的所有脚本都运行,但如果我们必须让所有脚本都运行,那么我可以接受。

服务器详细信息: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4 带有 Suhosin-Patch

当前配置非常简单(/etc/apache2/站点可用/默认):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

先谢谢您的帮助。

答案1

不要使用 CGI:它比 mod_php 慢得多。需要 fork 的脚本可以使用 shell 命令(system()函数)启动,然后随心所欲地 fork :)

如果您仍然想要 CGI,这里有一个提示,关于如何使用 CGI 处理程序和文件执行某些.htaccess脚本:同时运行 php4 和 php5。

答案2

CGI 是一种通用网关接口...也就是说,您不需要为特定语言设置它。但是,Apache 通常根据文件扩展名来确定如何处理文件(例如 file.cgi 与 file.php)

你的 Apache 配置很可能已经设置为处理 CGI 程序,你可能只需要做两件事

允许 CGI 从您所在的任何目录运行

<Directory /path/to/dir>
    Options +ExecCGI
</Directory>

为您想要的文件扩展名设置 CGI(例如 blah.phpcgi)

AddHandler cgi-script .phpcgi

相关内容