4

ホストされているスクリプトが移動され、機能しなくなりました。

指定された CGI アプリケーションは、HTTP ヘッダーの完全なセットを返さないため、誤動作しました。

ホスト会社の誰かが私のスクリプトを変更したことに気付きました。

use lib 'd:/myorig/LIB';

私は今持っています

use lib '//newhost/LIB';

これは機能するはずですか?

1800 INFORMATIONさんの提案を試して、最小限のスクリプトを実行しました

#!perl -w
use lib '//whatever/lib';
print "success";

...同じ結果が得られました。

更新: FatalsToBrowser に関する ysth の提案により、実際に詳細な情報が明らかになりました。パス (ホスティング会社の誰かが追加したもの) が間違っている可能性があります。

Update2 : ホスティング会社は、これらのスクリプトは、以前のホストの心と変わらず、多くの構文エラーをスローしていると述べています。「あなたのスクリプトをデバッグすることはできないため、元のプログラマーに連絡して助けを求めることをお勧めします」. <grinds teeth>

部分的な解決:ホスティング会社は、アクセス許可を正しく設定していないことに最終的に気付きました。彼らはまだ正しくなく、(aargh) サイトの所有者が自分のサイト内のフォルダーに対してさえ、フォルダーのアクセス許可を設定することを許可していません。

4

5 に答える 5

3

うまくいくかどうかはわかりませんが、私の直感では大丈夫です。ただし、use lib投稿した2行は同等ではありません。

# 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";

次に、可能であればサーバー上でそれを実行し、何が起こるかを確認してください。

于 2009-04-19T08:01:22.363 に答える
2

いいえ、パスは不完全です。サーバー名と完全なパスの両方が必要です。アプリケーションが機能するには、1 台ではなく 2 台のマシンを監視する必要があるため、これも悪い習慣です。

于 2009-04-19T08:11:40.760 に答える
1

apache ユーザーがネットワーク ドライブの使用を許可されていなかったため、apache からマップされたドライブと unc パスを使用しようとすると問題が発生したことはわかっています。それを理解するのは困難でしたが、それは可能です。それは関連する問題かもしれません。

于 2009-04-19T14:02:30.200 に答える
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/*";
于 2009-04-20T13:45:00.453 に答える