質問: お世話になっております。 PHPでSQL実行時にエラーになってしまいます。以下エラー文 Allowed memory size of 268435456 bytes exhausted (tried to allocate 43 bytes) in ~ 元々動いていたのですがPHPでSQLを何回か実行したところ、2006 MySQL server has gone awayとエラーが出てから上記のエラーがでて動きません。 以下実行したこと ・php.iniのmemory_limitを変更(変化なし) →phpinfoで調べたところLocalInfoが変わっていない。 ・phpMyAdminからテーブルを修復 ・phpinfo.phpに表示されるLocal ValueとMaster Valueの違いとはにて > > この状態は、PHP.iniで設定している値を、 > > .htaccessファイルによって上書きしている状態です。 > > 同様にhttpd.confファイルで上書きしている場合にも同じように、 > > LocalValueの値がhttpd.confで設定した値で表示されます。 > > > とのことだったのですが.htaccessはなく、httpd.confでも設定しているような箇所が見つかりませんでした。 現在、phpMyAdminから同じSelect文を実行したが普通に動きます。 XAMPPも何回も再起動をかけたのですが効果が見られない状態です。 もしほかに必要な情報などありましたら随時更新します。よろしくお願いします。
回答: エラーが2つ出ているようですので、1つずつ回答します。 > > Allowed memory size of 268435456 bytes exhausted (tried to allocate 43 bytes) in ~ > > > PHPの当該プログラムに割り当てられているメモリ上限を超えてしまっています。 そのため、割り当てメモリ量を増やすと解消するはずです。 なぜphp.iniに設定した内容が反映されないのかはわかりませんが、「とりあえずこのエラーを解消したい!」ということであれば、PHPのプログラム中に ``` ini_set("memory_limit", "512M"); ``` と書いてしまってはどうでしょう? ※上記コードは「このプログラムだけ、PHPのmemory_limitを512MBにする」という設定になります。 (512Mは適当な値ですので、割り当てたいメモリ量を検討の上、ご指定ください) > > MySQL server has gone away > > > MySQLの接続が切れてしまっています(考えられる理由はいくつかあります)。 https://qiita.com/RyutaKojima/items/3772d695db5e2342ab47 にとてもよくまとめられておりますので、こちらを参考に確認してみていただくと良いのではないかと思います。