ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2009年10月9日金曜日

[PHP] 画像のアップロードができない問題を解決した

■原因
GD(および他の画像処理ライブラリ)がインストールされていなかったため。

■行ったこと
パッケージ・マネージャでphp5-gdをインストールした。
各画像ファイル形式を扱うライブラリについては、
libjpegはlibjpeg62、pngはzlib1gがインストール済みだったため、freetype2-demosだけインストールした。

ついでに、myAlbum-Pモジュール推奨のImageMagickもインストールしました。
こちらも、パッケージ・マネージャからphp5-imagickをインストール。

■確認方法
GDがインストールされていれば、phpinfo()で、GDに関する項目が表示される。

■参考
GD:
http://www.php.net/manual/ja/book.image.php
http://d.hatena.ne.jp/hiratake55/20090119/1232363523

ImageMagick:
http://headape777.blog59.fc2.com/blog-entry-241.html 

web上には、configureオプションにgdを含めてphpをコンパイル、インストールしなさい、php.iniも編集しなさい、という指示が多い。
でも、パッケージのインストール→Apache再起動だけで使えるようになりました。

■その他
 XOOPSのmyAlbum-Pでサイズ制限を超えたファイルをアップすると、何の注意も出ず、ただ表示されない。
最初これでつまづいたことからこの問題にたどり着いたけれど、これはまた別の(モジュールの)問題。

2009年9月29日火曜日

[XOOPS] PHPメモリ割り当て設定

現象:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1310526 bytes) in /var/www/vhosts/makinecim.com/httpdocs/generator/pages/class.utils.inc.php(2) : eval()'d code on line 6
というようなエラーが表示される。
ページ全体が表示されず、エラー文のみが表示される場合も、
ページの途中で表示される場合もある。


対策:
1)php.iniの設定(サーバ全体)を変更して、XOOPSを再インストール
/etc/php5/apache2/php.ini
270行目:memory_limit = 16M
→ memory_limit = 64M

2)mainfile.phpでの設定(XOOPS)を変更
(XOOPSインストールフォルダ直下)/mainfile.php
30行目: define("XCL_MEMORY_LIMIT", "16M"); // extra param
→ define("XCL_MEMORY_LIMIT", "64M"); // extra param


仕組み:
php.iniはインストール時に参照される。実際のXOOPSの動作には関係ない。
XOOPSの動作が依存するのは、インストール時にphp.iniの設定をデフォルトとして、mainfile.phpに書き込まれた設定。
mainfile.phpのメモリ割り当て設定ははインストール時に設定変更可能。

(64MBのサイズは適当なもの。)