ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Let's PHPコミュのPHP4.4.1でimagejpegでの新規画像生成が失敗する

  • mixiチェック
  • このエントリーをはてなブックマークに追加
PHP4.4.1以降の環境でimagejpegによる新規画像生成がWarning: enable to access で失敗するようになりました。おそらくsafemodeの環境だけだと思われますが…。

対処方法は次の通りです。
(参考:http://jp2.php.net/manual/ja/function.imagejpeg.php

例えば、

imagejpeg( $img, $out_filepath );

のような部分を、次のように変えます。

touch( $out_filepath );
imagejpeg( $img, $out_filepath );

つまり、imagejpegでファイル生成している直前に、touchを使ってそのファイルを事前に生成しておけばOKです(touchは、そのファイルが無ければ自動的に生成する)。別にtouchじゃなくても、別の方法を使っても構いません。

おそらく、imagegif、imagepng 等のほかのimage系のファイル出力関数にも同様の影響があると思われます。

これは、PHP4.4.1で加えられたSafemode関連の仕様変更による挙動のようです。
http://www.php.net/ChangeLog-4.php#4.4.1

既出だったらすいません。
間違いなどありましたらご指摘頂ければと思います。

コメント(3)

php-devに投げた方がいいような気がします。
やっぱこれ、良くない仕様変更ですよね?

http://bugs.php.net/bug.php?id=35060

こちらに既に上がっていて、「仕様だ」と言われているようだったので諦めていたのですが、良く見たら、

http://bugs.php.net/bug.php?id=35071

CVSの方で結局Fixされているみたいです。英語は得意ではないので間違っていたらすいません。

やはり、皆さんこの変更にはお怒りのご様子です。:(
ところですいません、私、php-devに入ってないので、この内容に価値があると思われる方でどなたかご親切な方、よろしければアナウンスお願いします。m(_ _)m

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Let's PHP 更新情報

Let's PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング