XOOPSのmyalbumでGDによる画像縮小がうまくいかない(スマイルサーバ)

XOOPSのmyalbumのせいというよりは、PHPのGDのからみだとは思います。

サーバーのバージョンを新しくして、同じようにmyalbumの設定をしました。
強制GDモードをonにし、ファイルサイズを小さくするように設定しています。
このファイルサイズが小さいものは普通に登録されるのですが、ファイルサイズが設定よりも大きなもので、GDを経てサイズ変換がかかったものは、すべて×印となります。

サーバのほうにはファイルは生成されているのですが、すべて同じファイルサイズ(重さ)でなぜか属性が「600」。
直のURLを打つと、403エラーが出ます。

GDがうまく動いていないようでしたので、GDに関していろいろと調べてみることにしました。
参考:PHPでGDを使おう

ここに、php.iniの設定について書いてあります。

extension=php_gd2.dll

しかし、今回はこれは関係ありませんでした。

「imagejpeg」(GD)で作成した画像を保存できない(@教えて!Ziddyちゃん)を参考にして、画像の表示をさえてみるとうまく表示されます。しかし、画像の生成(new.jpg)となると、サーバにnew.jpgというのは生成されるのですが、やはりパーミッションが600で403アクセス不可エラー。これを、FTPソフトで644にして、キャッシュを削除して表示させるとうまく見えています。

GDを通して作った画像が、パーミッション600になるのが問題のようですけど・・・・・・スマイルサーバーに問い合わせを出しました。ちなみに、セーフモードはOFFです。

で、そのあと、「GD パーミッション 600」で調べたらドンピシャ(死語?方言?)な記事が!

my-Album Pのサムネイル画像のパーミッションが、600になってしまいます。(@XoopsUsersGroupJapan
やはり、XUGJは偉大じゃった・・・・・・。

include/functions.php L56あたりの「function myalbum_modify_photo( $src_path , $dst_path )」に

function myalbum_modify_photo( $src_path , $dst_path )
{
umask( 0022 ) ;
と、追加。

私の場合、サムネイルだけではないので、L256あたりにも

function myalbum_modify_photo( $src_path , $dst_path )
{
umask( 0022 ) ;

追加。うまくいきました!!

後日、スマイルサーバーより回答を頂きました。

GDモジュールを使用して編集された画像ファイルのパーミッションは、
ご申告の通り「600」となるようでございます。

原因につきましては、PHPの仕様の違いによるものであると考えられます。

解決策としましては、以下の何れかで、ご希望に沿う形をご提供できるかと
存じ上げますので、ご確認くださいませ。

・PHP側のスクリプトで、ファイル作成前 にumask()を指定して
 ファイルを作成いただく。

・ファイル作成後にchmod()を使用してパーミッションを変更いただく。

ですので、上記の対応で間違いはないようです。

ツꀀ(2010.6.3作成/2010.06.07追記/2010.06.08まとめ大幅修正)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です