我想做的事(最初)如下:
<?php
phpinfo();
?>
我有两个不同的Web服务器在运行。如果我尝试在firefox中打开上面的内容,在任何文件名下,使用来自apache的:80端口,它只是回应上面的内容。
如果我尝试从端口:8888上的python扭曲的Web服务器打开上面的任何文件名,我得到一个http 500错误(CGI脚本错误
脚本标题的提前结束。)!
我正在运行Gentoo linux。我已经安装并重新安装了cgi不同的方式。任何其他文件,不使用CGI,都会按预期与两个Web服务器一起提供。
答案 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
。