こんにちは、はじめまして。
質問がありますのでお願いします。
CMSデザイナー1.1.4dを利用しております。
まずテストサーバーですべて機能のチェックなどしてトラブルもなかったので
本番サーバーにデータなど移動しました。
チェックプログラムも特に問題がありません。
パーミッションの設定も行いました。
ところが本番サーバーでは画像ファイルをアップロードしようとするとタイトルに
あるように「これは画像ファイルではありません」
というメッセージがでてしまいます。
どういった原因が考えられるでしょうか?
またどのようにチェックをかけているのかお教えください。
念のためその画像ファイルはテストサーバにても使ってみましたがやはりテスト用サーバーでは問題なくアプロードできます。
それではよろしくお願いします。
(少々理由があってバージョンアップは行えないこともご了解いただきたいと思います。)
エラーメッセージ:画像ファイルではありません
Re: エラーメッセージ:画像ファイルではありません
aktadaさん、ご質問ありがとうございます。
本番環境で画像のアップロードがうまくいかないとのことで、ご迷惑を
おかけしております。
CMS Designerで「アップロードされたファイルが画像かどうか?」という
判定には、PHPの getimagesize という関数を使っています。
getimagesizeの戻り値の配列の2番目の要素に、その画像のファイルタイプが
格納されており、これが何も入っていない場合、そのファイルは画像ではない、
と判断しております。
http://jp.php.net/getimagesize
この際に、アップロードされたファイルはPHPのアップロードファイル用作業
フォルダに存在しており、そのフォルダ上のファイルに対してgetimagesizeを
実行し、問題なければentryの各フォルダへコピーする、という手順になって
おります。
なので、ぱっと考えて可能性があるのは、
(1) PHPのアップロードファイル用作業フォルダに対して適切な権限が指定されていない。
(2) そのサーバのgetimagesizeでサポートされていないファイル形式のファイルだった。
の2つです。
また、何らかのエラーメッセージが出力されている可能性があるので、
php_value error_reporting 2048
上記の1行を、.htaccessというファイル名で作成し、そのサイトのルートフォルダ
において再度実行すると、getimagesize関数が何らかのエラーメッセージを出力
しているのが見えるようになるかもしれません。
この行は、全てのPHPのエラーメッセージを表示せよ、という命令です。
以上、現状で思いつく点を挙げさせて頂きました。
問題解決のご参考になれば幸いです。問題解決に至らなかった場合、再度ご連絡
ください。m(__)m
本番環境で画像のアップロードがうまくいかないとのことで、ご迷惑を
おかけしております。
CMS Designerで「アップロードされたファイルが画像かどうか?」という
判定には、PHPの getimagesize という関数を使っています。
getimagesizeの戻り値の配列の2番目の要素に、その画像のファイルタイプが
格納されており、これが何も入っていない場合、そのファイルは画像ではない、
と判断しております。
http://jp.php.net/getimagesize
この際に、アップロードされたファイルはPHPのアップロードファイル用作業
フォルダに存在しており、そのフォルダ上のファイルに対してgetimagesizeを
実行し、問題なければentryの各フォルダへコピーする、という手順になって
おります。
なので、ぱっと考えて可能性があるのは、
(1) PHPのアップロードファイル用作業フォルダに対して適切な権限が指定されていない。
(2) そのサーバのgetimagesizeでサポートされていないファイル形式のファイルだった。
の2つです。
また、何らかのエラーメッセージが出力されている可能性があるので、
php_value error_reporting 2048
上記の1行を、.htaccessというファイル名で作成し、そのサイトのルートフォルダ
において再度実行すると、getimagesize関数が何らかのエラーメッセージを出力
しているのが見えるようになるかもしれません。
この行は、全てのPHPのエラーメッセージを表示せよ、という命令です。
以上、現状で思いつく点を挙げさせて頂きました。
問題解決のご参考になれば幸いです。問題解決に至らなかった場合、再度ご連絡
ください。m(__)m
最後に編集したユーザー webmaster on 2007年5月14日(月) 22:28 [ 編集 1 回目 ]
PHPのアップロードファイル用作業フォルダ
アドバイスありがとうございます。m(__)m
ところで
(1) PHPのアップロードファイル用作業フォルダに対して適切な権限が指定されていない。
とありますが、これはどこになりますか?
CMSデザイナーでダウンロードしたデータ内にあるフォルダでしょうか?
それともサーバー側で設定するフォルダでしょうか?
またhtaccessを試したいのですが、これは私のほうで管理できない状態なので、すぐにできないので後日試します。
お手数ですが、よろしくお願いします。
ところで
(1) PHPのアップロードファイル用作業フォルダに対して適切な権限が指定されていない。
とありますが、これはどこになりますか?
CMSデザイナーでダウンロードしたデータ内にあるフォルダでしょうか?
それともサーバー側で設定するフォルダでしょうか?
またhtaccessを試したいのですが、これは私のほうで管理できない状態なので、すぐにできないので後日試します。
お手数ですが、よろしくお願いします。
Re: PHPのアップロードファイル用作業フォルダ
aktadaさん、お返事ありがとうございます。
PHPのアップロードファイル用作業フォルダですが、この辺はPHP自体の
セッティングに寄る部分ですので、普通にPHPがインストールできていれば問題が
無いと思います。
フォルダの具体的な場所は、php.iniのupload_tmp_dirというディレクティブ
に指定されている、とのことです。
http://jp.php.net/manual/ja/ini.core.ph ... ad-tmp-dir
CMS Designerのフォルダではないので、aktadaさんの設定による影響では
ないと思います。
また、ご連絡頂ければ幸いです。
PHPのアップロードファイル用作業フォルダですが、この辺はPHP自体の
セッティングに寄る部分ですので、普通にPHPがインストールできていれば問題が
無いと思います。
フォルダの具体的な場所は、php.iniのupload_tmp_dirというディレクティブ
に指定されている、とのことです。
http://jp.php.net/manual/ja/ini.core.ph ... ad-tmp-dir
CMS Designerのフォルダではないので、aktadaさんの設定による影響では
ないと思います。
また、ご連絡頂ければ幸いです。
aktadaさん、ご連絡ありがとうございます。
PDFファイルの場合、画像ファイルかどうかのチェックは行われない為、
今回のようなエラーが発生しないものと思われます。
恐らく、upload_tmp_dirに対してgetimagesizeからの「読み込み」権限が
無い為、このようなエラーが発生しているものと思われます。
もし、jpgやgif、png等複数の画像ファイル形式で試しても同様の結果に
なる場合には、ほぼ原因はそれだと考えて良いかと思います。
例えば、php.iniでopen_basedirディレクティブを指定しているにも関わらず、
upload_tmpがデフォルトのまま(コメントアウト状態)になっていると、
upload_tmpフォルダへのファイルアクセスが拒否され、getimagesize関数等も
失敗してしまうようです。
対処方法としては、upload_tmp_dirをopen_basedirで指定したフォルダ以下
のフォルダに指定するか、open_basedirの設定をコメントアウトするかのどちらか
ですが、open_basedirが指定されているということは恐らくセキュリティ上の
理由からと思われますので、前者が好ましいと思います。
以上、何度もお手数をおかけして申し訳ありませんが、よろしくお願い致します。
PDFファイルの場合、画像ファイルかどうかのチェックは行われない為、
今回のようなエラーが発生しないものと思われます。
恐らく、upload_tmp_dirに対してgetimagesizeからの「読み込み」権限が
無い為、このようなエラーが発生しているものと思われます。
もし、jpgやgif、png等複数の画像ファイル形式で試しても同様の結果に
なる場合には、ほぼ原因はそれだと考えて良いかと思います。
例えば、php.iniでopen_basedirディレクティブを指定しているにも関わらず、
upload_tmpがデフォルトのまま(コメントアウト状態)になっていると、
upload_tmpフォルダへのファイルアクセスが拒否され、getimagesize関数等も
失敗してしまうようです。
対処方法としては、upload_tmp_dirをopen_basedirで指定したフォルダ以下
のフォルダに指定するか、open_basedirの設定をコメントアウトするかのどちらか
ですが、open_basedirが指定されているということは恐らくセキュリティ上の
理由からと思われますので、前者が好ましいと思います。
以上、何度もお手数をおかけして申し訳ありませんが、よろしくお願い致します。