プロジェクトをテストするために開発マシンで実行XAMPP 1.8.1
しています。Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
私のプライベート プロジェクトと有名な Bootstrap Datepicker コンポーネントの両方で、任意の言語 (datepicker の場合は 38 のうちの 1 つ) を選択できますが、 Polish は選択できません。
詳細な調査の結果、これが原因であることがわかりました。ブラウザーがロケール ファイル (general.pl.json
私のプロジェクトのbootstrap-datepicker.pl.js
場合は 、Bootstrap Datepicker の場合は ) を読み込もうとすると、サーバー (Apache) が で失敗するため500 Internal Server Error
です。
Apache ファイルを分析した後error.log
、Apache がこのファイルを (おそらく Perl) 実行可能スクリプトとして実行しようとしているため、これが起こっていることがわかりました。
[win32:error] [pid 5128:tid 1680] [client 127.0.0.1:53455] AH02102: C:/XAMPP/htdocs/mobile/public/pg-demo-bootstrap/locales/general.pl.json is not executable; ensure interpreted scripts have "#!" or "'!" first line, referer: http://127.0.0.1/mobile/public/pg-demo-bootstrap/
[cgi:error] [pid 5128:tid 1680] (9)Bad file descriptor: [client 127.0.0.1:53455] AH01222: don't know how to spawn child process: C:/XAMPP/htdocs/mobile/public/pg-demo-bootstrap/locales/general.pl.json, referer: http://127.0.0.1/mobile/public/pg-demo-bootstrap/
[win32:error] [pid 5128:tid 1644] [client 127.0.0.1:53465] AH02102: C:/XAMPP/htdocs/us/ustv/assets/6dafd2fe/js/locales/bootstrap-datepicker.pl.js is not executable; ensure interpreted scripts have "#!" or "'!" first line, referer: http://127.0.0.1/us/ustv/content/manage/update.html?id=4
[cgi:error] [pid 5128:tid 1644] (9)Bad file descriptor: [client 127.0.0.1:53465] AH01222: don't know how to spawn child process: C:/XAMPP/htdocs/us/ustv/assets/6dafd2fe/js/locales/bootstrap-datepicker.pl.js, referer: http://127.0.0.1/us/ustv/content/manage/update.html?id=4
コンテンツとファイル名を変更して多くのテストを行い、多くの偽のファイルを使用してこのファイル (ポーランド語のロケール) を偽装しましたが、コンテンツは問題ではなく.pl
、ファイル名だけが問題を引き起こすという結論に至りました。
良い質問は次のとおりです。
.pl
(Perl?)ファイル名の一部が途中にあり、ファイル名が実際に.js
またはで終わるのに、Apacheが主張するのはなぜ.json
ですか?Apache for Windowsが Linux/Unix/Bash スクリプトを実行しようとして、その最初の行にある文字
#!
または文字を探しているのはなぜですか?'!
さらに良い質問は、これを修正する方法です.Apacheはこのファイルを他のすべてのロケールファイルと同様に単純なJavascriptとして扱い始めますか? そしてそれを実行しようとしませんか?