“使用lib”是否适用于UNC路径?

时间:2009-04-19 07:48:41

标签: perl unc

我的托管脚本已被移动,不再有效。

  

指定的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)他们不允许网站所有者设置文件夹权限,甚至不允许他们自己网站中的文件夹。

5 个答案:

答案 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/*";