XOOPSのmyalbumのせいというよりは、PHPのGDのからみだとは思います。
サーバーのバージョンを新しくして、同じようにmyalbumの設定をしました。
強制GDモードをonにし、ファイルサイズを小さくするように設定しています。
このファイルサイズが小さいものは普通に登録されるのですが、ファイルサイズが設定よりも大きなもので、GDを経てサイズ変換がかかったものは、すべて×印となります。
サーバのほうにはファイルは生成されているのですが、すべて同じファイルサイズ(重さ)でなぜか属性が「600」。
直のURLを打つと、403エラーが出ます。
GDがうまく動いていないようでしたので、GDに関していろいろと調べてみることにしました。
参考:PHPでGDを使おう
ここに、php.iniの設定について書いてあります。
しかし、今回はこれは関係ありませんでした。
「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まとめ大幅修正)
コメントを残す