我的托管脚本已被移动,不再有效。
指定的CGI应用程序 由于没有回复完整而行为不端 一组HTTP标头。
我注意到我的主办公司的某个人已经修改了我的脚本,以便我曾经拥有
use lib 'd:/myorig/LIB';
我现在有
use lib '//newhost/LIB';
这应该有用吗?
我尝试了1800 INFORMATION的建议并运行了
的最小脚本#!perl -w
use lib '//whatever/lib';
print "success";
......给出了相同的结果。
更新:ysth对FatalsToBrowser的建议确实揭示了更多信息。看起来路径(由托管公司的某个人添加)可能是错误的。
Update2 :托管公司现在说,这些脚本与以前的主机一样,没有任何语法错误。 “由于我们无法为您调试脚本,我们建议您联系原始程序员并向他们寻求帮助”。 <grinds teeth>
部分解决方案:托管公司终于意识到他们没有正确设置权限。他们仍然不对,(aargh)他们不允许网站所有者设置文件夹权限,甚至不允许他们自己网站中的文件夹。
答案 0 :(得分:3)
我不知道它是否应该起作用,但我的直觉是它会好起来的。但是,您发布的两条use lib
行并不等效。
# go to the 'd' drive and use the 'myorigLIB' directory on that drive
use lib 'd:/myorigLIB';
# go to the 'newhostLIB' server - no path is specified - this looks invalid to me
use lib '//newhostLIB';
也许您需要在服务器上指定共享的路径?此外,您可能需要查看权限?也许用户CGI正在运行,因为无法访问该网络路径?
此外,您可以编写一个简单的(非CGI)程序来测试您的理论并运行它:
#!perl -w
use lib '//whatever/lib';
print "success";
然后在服务器上运行它,如果可以,看看会发生什么。
答案 1 :(得分:2)
如果路径不完整,则需要服务器名称和完整路径。这也是一种不好的做法,因为它需要监控两台机器而不是一台机器才能运行。
答案 2 :(得分:1)
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
这是一个非错误。如果运气好的话,你的托管公司会为你提供一个错误日志,它会显示perl正在死的实际错误。如果不, 考虑使用
use CGI::Carp "fatalsToBrowser";
进行测试。 (如果你是偏执狂(这不是一件坏事),一旦你完成测试,你将不会离开它,因为错误通常可以提供有关你的代码甚至数据库的信息,可能有助于黑帽利用安全性孔。)
答案 3 :(得分:1)
我知道我在尝试使用apache的映射驱动器和unc路径时遇到了麻烦,因为不允许apache用户使用网络驱动器。这很难弄清楚 - 但它可以做到。这可能是一个相关的问题。
答案 4 :(得分:1)
#!perl -w
print "HTTP/1.0 200 OK\nContent-Type: text/plain\n\n";
my $path = "//whatever/lib";
print "\nExists ", -e $path;
print "\nDirectory ", -d $path;
print "\nReadable ", -r $path;
print "\nListing:\n";
print "\t$_\n" for glob "$path/*";