我试图通过 html 文件调用 CGI 程序。但因错误“找不到文件”而陷入困境。
我正在尝试与以下站点中相同的程序:
http://highered.mcgraw-hill.com/sites/dl/free/0070635463/372169/CGI_with_PERL.pdf
请找到下面的 html 文件:
<html> <head>
<title>The Employee Database</title>
Appears on title bar
</head>
<body>
<h1> Employee Form </h1>
Appears in a large bold font
<hr>
Adds a horizontal rule
<form action=”http://localhost/~ravbholua/emp_add.pl” method=get>
Emp-id: <input type=”text” name=”empid” size=4> <br>
Name: <input type=”text” name=”ename” size=30> <br>
Designation: <input type=”text” name=”desig” size=15> <br>
Department: <input type=”text” name=”dept” size=15> <br>
Dateoffuse: <input type=”text” name=”dtbirth” size=10> <br>
noSalary: <input type=”text” name=”salary” size=10> <br> <br>
<center>
<input type=submit value=”Add”>
The Add button is centered
</center>
</form>
</body>
</html>
为了在我的系统中工作,我更改了(比上面链接中提到的更改的)CGI 程序文件的路径。现在的路径是:http://localhost/~ravbholua/emp_add.pl
当我单击“添加”按钮时,出现“找不到文件”的错误。请查看附件。
请查看表格(附件)。
为什么找不到用户名“ravbholua”的主目录中的文件?这两个附件将帮助您解决问题。
我在下面的链接中有相同的查询,但尚未解决。请仔细看一下。http://www.linuxquestions.org/questions/linux-server-73/web-page-not-able-to-find-cgi-program-file-4175476182/
答案1
Web 服务器通常不会转换~ravbholua
为您的用户主目录(需要特殊配置才能执行此操作),我也不建议尝试任何方法来执行此操作,因为这会使主目录的全部内容可见通过服务器 - 一个重大的安全风险。
尝试public_html
在主目录下创建一个目录并将文件放在那里。但请注意,Web 服务器实际上可能会重写 CGI 脚本的位置,或者拒绝将某些位置的文件视为 CGI 脚本 - 再次出于安全考虑。这取决于网络服务器的配置。同样,对于实际映射~ravbholua
- 它可能不会转到该用户$HOME/public_html
目录。
查看 下的 Web 服务器日志文件/var/log
(可能命名为http.log
或 之类的名称apache.log
)可能会提供错误或信息,有助于追踪此问题的根本原因。如果这不起作用,使用跟踪 Web 服务器strace
会有所帮助 - 尽管这可能很难做到。可以通过 看到网络服务器访问的所有文件的路径strace
。