質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

5473閲覧

PHPで配列が容量を越える

YamamotoHiroki

総合スコア57

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2017/08/07 15:18

PHPExcelでExcelからPHPの配列にデータを読み込んで処理しているのですが
エクセルのデータ量が大きすぎてPHPの制限を超えてしまいます。

以下エラー文です

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 6 bytes)

134217728byte = 128MBです

php.iniを確認したところ
memory_limit = 128MB
となっていたので
memory_limit = 256MB
にしてみたのですが

エラー文は変わりないままでした。
きちんと反映されていないのでしょうか?

MacをつかっていてMAMPを使っています。
phpinfoからphp.iniの場所もきちんと確認してそちらのphp.iniをいじりました。

$php --version
PHP 5.5.38

次に何を確認してみるべきでしょうか?
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tell_k

2017/08/07 15:40

phpinfo でも memory_limit の項目が確認できると思うのですが、変更後に256MBになってますか?
YamamotoHiroki

2017/08/09 15:09

なっていませんでした、再起動すると変更できました。
guest

回答3

0

ベストアンサー

対象のphpの冒頭で下記を記述してみてはどうでしょうか

php

1ini_set('memory_limit', '256M');

投稿2017/08/07 23:47

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

apacheのhttpd.confでも

php_value memory_limit 256MB

を指定して httpd restartしてください。

投稿2017/08/07 15:36

Tak1016

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

本当にエクセルのデータ量が大きすぎることが原因でしょうか?私が最近PHPExcelを利用したときには何十シートもあるようなExcelを扱わない限りメモリ使用量が128MBを超える事はありませんでいた。

意図しない無限ループなどが発生して、メモリを無限に確保しようとしてしまっている場合でも質問文にあるようなエラーが発生しますので、
echo " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB <br>";
のようなコードを各所に仕込んで、メモリの使用量がどのように増加しているかを追ってみるとよいかもしれません。

あとphp.iniのはApacheの再起動をしないと反映されないと思うんでエラー文が変わらないのはそれが原因かもしれません。

投稿2017/08/08 05:15

編集2017/08/08 05:21
ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YamamotoHiroki

2017/08/09 15:08

echo " Peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB <br>"; これで追ってみると 440MB必要でした。 A.Ichiさんの方法で解決することができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問