ホストはLinuxです。私は同じディレクトリに複数のファイルがあります。 *.pl
ファイルはすべてコメントだけが異なる先頭に次が含まれています。一部のperlファイルで一貫性がなく、不可解な動作があります
#!/usr/bin/perl -w
BEGIN { chdir('/home/httpd/vhosts/mysite.com/httpdocs/newsbot'); unshift(@INC, "/home/httpd/vhosts/mysite.com/httpdocs/newsbot"); }
use Form;
use File;
use Mysite;
#Read in All Form Variables
&ReadInForm;
ファイルForm.pm
はReadInForm
サブルーチンと他には何が含まれています。
sub ReadInForm {
}
1;
奇妙なことは、上記の出力が完全に矛盾していることです。時にはそれが細かい実行されますが、スクリプトの末尾に「内部サーバーエラー」メッセージを表示し、error_log
ファイルに次のようになります:
引数には、「」は/ usr/lib64のでサブルーチン・エントリの数値ではありません/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/RegistryCooker.pmライン171 \ nは、リファラ:http://www.mysite.com/newsbot/groupkeywords.pl
他の回では、それは次のコマンドを実行し、出力されませんブラウザ:
未定義のサブルーチン& ModPerl :: ROOT :: ModPerl ::レジストリ:: home_httpd_vhosts_mysite_2ecom_httpdocs_newsbot_groupkeywords_2epl :: ReadInForm /home/httpd/vhosts/mysite.com/httpdocs/newsbot/groupkeywords.plラインでそれが動作する11
他の回と呼ばれます正しくエラーなし。
奇妙なことは矛盾していることです。私はファイルから1つの出力を得て、数分後にリフレッシュして、もう1つを得ることができます。私はいくつかの "内部サーバーエラー"メッセージと500の応答ヘッダーも実際のコンテンツと一緒に持っています。 &ReadInForm;
という行をコメントアウトすると、毎回問題が解決されるので、私はそれを絞り込んだが、何を入れても問題はない。Form.pm
。私は空のサブルーチン(上記のように)を置くことさえできますが、それでも問題は解決しません。
これをデバッグする方法についてもわかりません。どのようにそれが矛盾している可能性はありますか? Perlコンパイラはキャッシュの裏側で何らかの仕組みをしていますか?
プリフォークを使用していると仮定して、 "MaxClients 1"を設定して、単一のhttpd子プロセスしか持たないようにしてください。 Apacheを再起動して、やり直してください。そうすれば、すべてのリクエストが同じプロセスにぶつかり、デバッグが容易になります。 –
Corey、残念ながら、それは共有ホスティングであり、私はrootアクセス権を持っていません。彼らは私のためにこれを行うことができるかどうかを見るために、今日後で彼らの話を聞くことができるかもしれませんが、今はオフラインです。 – Mike
私は彼らが共有ホスティングでそれをしているとは思わない。 –