为什么我的PHP脚本不起作用

时间:2010-02-23 13:50:35

标签: php apache twisted

我想做的事(最初)如下:

<?php
phpinfo();
?>

我有两个不同的Web服务器在运行。如果我尝试在firefox中打开上面的内容,在任何文件名下,使用来自apache的:80端口,它只是回应上面的内容。

如果我尝试从端口:8888上的python扭曲的Web服务器打开上面的任何文件名,我得到一个http 500错误(CGI脚本错误

脚本标题的提前结束。)!

我正在运行Gentoo linux。我已经安装并重新安装了cgi不同的方式。任何其他文件,不使用CGI,都会按预期与两个Web服务器一起提供。

3 个答案:

答案 0 :(得分:1)

获胜者是:

<IfDefine PHP5>
    # Load the module first
    <IfModule !mod_php5.c>
            LoadModule php5_module    modules/libphp5.so
            AddHandler php5-script php
            AddHandler php5-script html
            AddType text/html       php
    </IfModule>

    # Set it to handle the files
    <FilesMatch "\.ph(p5?|tml)$">
            SetHandler application/x-httpd-php
    </FilesMatch>

    <FilesMatch "\.phps$">
            SetHandler application/x-httpd-php-source
    </FilesMatch>

    DirectoryIndex index.php index.phtml

我真的不知道我在做什么。我所知道的是我达到了预期的效果:我的root htdocs目录中的任何* .php或* .html文件都将正确呈现php SCRIPTS。我在网上发布了很多关于这个问题的混淆。我的php脚本以<?开头,以?>结尾。没有必要编写<?php,也没有必要在* .php文件中写出任何http头。

答案 1 :(得分:0)

你不需要将php作为cgi-bin运行。只需将文件放在htdocs文件夹下。

确保使用LoadModule

在httpd.conf中加载mod_php5

并重启服务器 - &gt; apachectl restart

它可以开箱即用

答案 2 :(得分:-1)

您需要先输出CGI的标题:

<?php
echo "Content-type: text/html\n";
echo "\n";

phpinfo();
?>

有关详细信息,请参阅the CGI documentation

修改

在httpd下,您需要将脚本放在cgi-bin/中并通过那里访问它,例如http://example.com/cgi-bin/phpinfo.php