2013-12-15 12 views
8

にクラッシュ私は終了する前にクラッシュし、ローカルホスト上で)いくつかが含まれて(PHPスクリプトを実行しているPHP/Apacheがスクリプト(セグメンテーションフォールト(11)

を[SOLVED]。

エラー報告することにあるオペラ、SafariとFirefoxが空の画面を返し しかし、Chromeが返されます。

Unable to load the webpage because the server sent no data. Error code: ERR_EMPTY_RESPONSE

Apacheはリターンを記録します。

[Sun Dec 15 19:29:23 2013] [notice] child pid 34267 exit signal Segmentation fault (11)

初めて問題が発生したときにPHP 5.5.6を使用していました PHP 5.4.21にダウングレードしても、問題は解決しません。

問題はスクリプト内にありません。無作為に50行のコードをコメントアウトすることで、この問題が解決されます。私のスクリプトが実行のために長くなるかもしれないかどうか疑問に思う。

誰も私がこの問題を解決する方法について提案していますか?

UPDATE:

問題は、ローカルホスト上だけでなく、私のウェブサーバは、Apache上で同じエラーを与えるのCentOS 6.4とP​​HP 5.3.3で実行されているに表示されないだけではなく。

[Sun Dec 15 23:15:10 2013] [notice] child pid 18409 exit signal Segmentation fault (11)

アップデート2:

はPHPをコマンドラインから実行できます:

$ php index.php Fatal error: Call to undefined function mcrypt_create_iv() in Encrypt.class.php on line 135

Encrypt.class.php

$ php index.php
Segmentation fault: 11

にライン135の前にコメントを配置した後UPDATE3 :(解決策)

コマンドラインでstrace(strace php index.php)を使用してインデックスを実行した後、クエリの1つで問題が見つかりました。

私のクラスではなくPDOを使用してデバッグした後、自分のPDOオプション "ATTR_PERSISTENT => true"を設定していることがわかりました。このオプションを無効にすると私の問題が解決しました。

+1

コマンドラインからスクリプトを実行してみてください。セグメンテーションフォールトが発生した場合は、PHPのバージョンを再インストールする必要があります。コマンドラインからうまく動いたら、おそらくApacheを再インストールするべきです。どのようなコード行がこのエラーを正確に投げているのですか?あなたは知っていますか? –

+0

@MisterMelancholyコマンドラインでファイルを実行すると、135行目のEncrypt.class.phpの未定義関数mcrypt_create_iv()を呼び出すと "致命的なエラー"が表示されます。この関数はブラウザで正常に動作します。特定の行はエラーを示しません。 – webecreative

+0

PHPをダウングレードすると、拡張子.soファイルもすべてダウングレードされていますか?おそらく、PHP 5.4または5.3でPHP 5.5のmcrypt拡張を使用しているかもしれません(CLIが読み込んだphp.iniファイルを含めないでください) – Brad

答えて

3

Update3と:(ソリューション)PDOの

Persistenオプションは悲しげに十分な私のパフォーマンスを破りました。

解決策が見つかりました。strace: コマンドラインでstrace(strace php index.php)を使用してインデックスを実行した後、そのクエリの1つで問題が見つかりました。

クエリを分離した後、私は自分のクラスをデフォルトのPDOに置き換えました。私のクラスのオプションをもう一度壊すまで追加: 自分のクラスではなくPDOを使用してデバッグした後、自分のPDOオプション "ATTR_PERSISTENT => true"を設定していることがわかりました。このオプションを無効にすると私の問題が解決しました。

関連する問題