帮忙看看为什么php文件放在cgi-bin里不执行?

帮忙看看为什么php文件放在cgi-bin里不执行?

一个问题,希望能得到指点,谢谢先!

在FC3:apache+mysql+php上

写了test_mysql.php程序要测试mysql是否连上:

<?php
$connect = mysql_connect("localhost", "user", "passwd");
if ($connect)
{echo "OK";}
else {echo "NO"; die;}
?>

将此程序放在cgi-bin下面,改755。

在与cgi-bin平级的html目录下写test.html
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<FORM METHOD="POST" ACTION="/cgi-bin/test_mysql.php"  ENCTYPE="multipart/form-data">
         
        <div align="center">
          <input type="SUBMIT" value="test_mysql" name="SUBMIT">
          <input type="RESET" value="Reset" name="RESET">

        </div>
</FORM>
</body>
</html>

运行后出错,apache的log里说:
[Thu Apr 21 11:26:31 2005] [error] [client *] (Exec format error: exec of '/var/www/cgi-bin/test_mysql.php' failed, referer: http://IP/test.html
[Thu Apr 21 11:26:31 2005] [error] [client *] Premature end of script headers: test_mysql.php, referer: http://IP/test.html

但是把这个php文件直接放在html目录下,就可以得到OK。
此外,在cgi-bin下的perl程序都可以通过页面请求而运行。
请问为什么这个php程序不能在cgi-bin下运行呢?是不是什么地方写错了?还是apache里cgi-bin方面关于php的设置没写好?

谢谢指教!
把 test_mysql.php 属性改成777,试下。还有你的cgi-bin的权限,查看下。
谢谢!我会再试试。不过这个问题我在windows下装php+apache时也同样遇到,想不到linux里也是这样,可是放在cgi-bin下的perl就可以运行,真是奇怪。还是要多谢提醒。
[quote:f91fc7d685="alice_alice"]帮忙看看为什么php文件放在cgi-bin里不执行?[/quote]php不是纯粹的CGI,根本不可能被“执行”。
那是我“用词不当”么,我的意思是说把一个php程序放在cgi-bin里,按放在html目录下的网页上的submit,得不到返回的结果。但是同样的程序我用perl写好,放在cgi-bin里,用同样的网页就能得到结果,我不知道是什么原因造成的,因此请教各位。如果不能用“执行”,那应该是用个什么词来说才是对的?
php程序没必要放cgi-bin里面的。
那你们都把php程序放在哪里呢?直接放在html目录下面吗?我放过,那样是可以得到结果的,但是是不是会不安全呢?
[quote:52ade92811="alice_alice"]那你们都把php程序放在哪里呢?直接放在html目录下面吗?我放过,那样是可以得到结果的,但是是不是会不安全呢?[/quote]
無語!-_-!
[quote:2a342c6ce3="alice_alice"]那是我“用词不当”么,我的意思是说把一个php程序放在cgi-bin里,按放在html目录下的网页上的submit,得不到返回的结果。但是同样的程序我用perl写好,放在cgi-bin里,用同样的网页就能得到结果,我不知道是什么原因造成的,因此请教各位。如果不能用“执行”,那应该是用个什么词来说才是对的?[/quote]不是用词的问题。我想是因为你还没有理解什么是CGI。

给你一个简单的判断点:

CGI 程序是可以在命令行下被SHELL(而不是被 HTTP 服务器)直接执行的程序,也就是说你可以直接用 ./file_name 这种形式来运行。
于是,传统的 CGI 都是各类二进制程序。而脚本,比如 Perl ,虽然它是需要 Perl 环境才能正确执行,但是通过文件头部的“#!/usr/bin/perl”可以让 Shell 知道如何处理它。

ASP、JSP、PHP 这类“服务器端脚本”则不同,它是依赖于 HTTP 服务器模块来运行的,脱离了 HTTP 服务器就无法独立运行。
谢谢版主的指教。请不要笑我的问题有些“外行”,虽然你的那只猫晃得我头都晕了,但我想我明白我的原因了。谢谢,不多问了。