[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
質問
UPDATE この問題は、スクリプトが完了する前にサーバーの要求がタイムアウトしたために発生しました。 *
私はレガシーコードを共有LAMPホスト(almostfreespeech.net)で実行していますが、最近新しいスクリプトを追加したところ、本番で動作しなくなりました。
apacheのエラーログには、次のようなメッセージが表示されます。
End of script output before headers: switch.php
ウェブクライアントでスクリプトを起動しようとすると、500 ステータスが表示されます。
他のStackOverflowの投稿によると、このエラーメッセージは、通常、ファイルのパーミッションのエラーによるものです。しかし、新しいスクリプトのファイルパーミッションは、他のすべてのスクリプトと同じです。
以下は、該当するファイルのパーミッションです。
-rw-rw-r-- 1 235430 235430 1655 Jul 6 18:05 switch.php
drwxrwxr-x 2 235430 235430 18 Jul 1 21:05 auth/
-rw-rw-r-- 1 235430 235430 13 Aug 24 2015 auth/.htaccess
-rw-rw-r-- 1 235430 235430 280 Jul 1 21:05 auth/cloudsaves.2.php
-rw-rw-r-- 1 235430 235430 880 Aug 28 2015 auth/cloudsaves.php
-rw-r--r-- 1 235430 web 15580 Jul 1 21:05 auth/rumpus_migration.php
これらを使って
include()
のヒエラルキーがあります。
-
switch.php -> auth/cloudsaves.php
(作品) -
switch.php -> auth/cloudsaves.2.php <- auth/rumpus_migration.php
(動作しません)
すべてのリクエストは
switch.php
のいずれかを引き起こすパラメータ値を含み、かつ
auth/cloudsaves.php
または
auth/cloudsaves.2.php
を含めることができます。
私のローカルのテスト環境では、すべてがうまく動作しています。本番環境では、このパラメータを使用すると
switch.php
を含めることができます。
cloudsaves.2.php
スクリプトを実行すると、エラーが発生します。
のグループとパーミッションを変更してみました。
rumpus_migration.php
と
cloudsaves.2.php
が適切にインクルードしている他のファイルと正確に一致するように、 親の
switch.php
スクリプトは、常に同じ結果をもたらします。この新しいスクリプト (
cloudsaves.2.php
) が含む唯一のスクリプトです。
switch.php
それ自体
includes
別のスクリプトです。
私はApacheやPHPに詳しくなく、本番コードは共有ホスト上にあり、私の管理者アクセスは極めて限定的です。コードがローカルでは動作するが本番では動作しないという事実から、パーミッションの問題が犯人である可能性が高いと思われますが、どの作業パーミッションのオプションも修正できないようなので、どのように進めればよいのかわかりません。
解決方法は?
問題は、長時間実行されるデータベースクエリのために、スクリプトが完了する前にリクエストがタイムアウトすることでした。
そのため、その汎用的な
End of script output before headers
のエラーは、サーバーのタイムアウトやファイルのパーミッションの問題によって引き起こされる可能性があります。
関連
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】In_arrayが動作しない。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない
-
[解決済み] PHPスクリプトからJSONを返す
-
[解決済み] PHPで「Header already sent」エラーを修正する方法
-
[解決済み] PHP cURL カスタムヘッダ
-
[解決済み] Laravelのデイリーログが間違ったパーミッションで作成される
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み】chromeの「net : Failed to load resource: net::ERR_SPDY_PROTOCOL_ERROR" は何がおかしいのか?
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない