jpeg拡張子の画像がアップできない。

質問全般・改善要望
mojira
メンバー
メンバー
記事: 85
登録日時: 2009年10月04日(日) 14:25

jpeg拡張子の画像がアップできない。

投稿記事by mojira » 2018年2月01日(木) 13:52

いつもお世話になっております。

リソース編集時のFile Browserにてjpeg拡張子の画像をアップしようとすると

[202,'Failed to upload file, internal error.' jpeg]のエラーがでて、アップ出来ないようです。

グローバル設定の「ファイル管理設定」もjpegと記述しています。

当方の環境によるものなのかと考え、MODXデモサイトにて確認したのですが、

同様のエラーでアップ出来ませんでした。

ちなみに、アップ前の画像拡張子jpegをjpgとリネームすると、正常にアップできます。

MODXの問題ではなく、ファイルブラウザの問題かも知れません。

どうぞ宜しくお願い申し上げます。


/*********使用環境**************/
ご利用のサーバ:ロリポップ
MODXバージョン:1.0.19J
PHPのバージョン:7.1.5
ブラウザ:chrome
/*****************************/
mod_kks
メンバー
メンバー
記事: 11
登録日時: 2017年11月04日(土) 01:31

jpeg拡張子の画像がアップできない。

投稿記事by mod_kks » 2018年2月08日(木) 01:59

エラーが出た後、ファイルブラウザをリロードするとおそらく画像自体はアップされていて、
拡張子は「.jpeg」から「.jpg」に変わっているのではないかと思いますがいかがでしょうか。

見た所、$modx->move_uploaded_file の動作でIMAGETYPE_JPEGに該当するものは拡張子を
「.jpg」としてしまうようで、chmodの第一引数で渡されるパス(.jpeg)と移動後の実ファイル(.jpg)
に差異が生じ、ファイルが見つからずPHP上ではエラー→エラー抑制で戻り値なし→エラーコード、
メッセージがJSに渡され表示・・・といった感じでしょうか。

/manager/media/browser/mcpuk/connectors/Commands/FileUpload.php

if($modx->manager->modx_move_uploaded_file($tmp_name,$target))
return @chmod($target,$modx->config['new_file_permissions']);

$targetで渡されるファイル名を末尾「.jpeg」に合致する場合のみ「.jpg」に書き換えるような
処理を書けば暫定的な解決はできそうな気がしますが、そもそも$modx->move_uploaded_file
でchmod処理が行われているような気がするので、単純に「return true;」でも問題ないかも。
mojira
メンバー
メンバー
記事: 85
登録日時: 2009年10月04日(日) 14:25

jpeg拡張子の画像がアップできない。

投稿記事by mojira » 2018年2月08日(木) 12:35

mod_kksさん ありがとうございます。
拡張子は「.jpeg」から「.jpg」に変わっているのではないかと思いますがいかがでしょうか。

確かにブラウザをリロードすると、.jpgに変わってアップされておりました。
確認不足で申し訳ありません。
$targetで渡されるファイル名を末尾「.jpeg」に合致する場合のみ「.jpg」に書き換えるような
処理を書けば暫定的な解決はできそうな気がしますが、そもそも$modx->move_uploaded_file
でchmod処理が行われているような気がするので、単純に「return true;」でも問題ないかも。

解決方法もご教授頂き感謝です。
プログラムは全然詳しくないのですが、頂いた内容を元に書換えて見たいと思います。
アバター
yama
管理人
記事: 2946
登録日時: 2009年7月29日(水) 02:50

jpeg拡張子の画像がアップできない。

投稿記事by yama » 2018年2月14日(水) 11:09

なるほどですね。ファイルブラウザ側のchmodを廃止するのがスマートだと思うので、後ほど修正します。
アバター
yama
管理人
記事: 2946
登録日時: 2009年7月29日(水) 02:50

jpeg拡張子の画像がアップできない。

投稿記事by yama » 2018年2月14日(水) 12:42

https://github.com/modxcms-jp/evolution ... evelop.zip
修正しました。managerフォルダを上書きしていただいてよいでしょうか?
mod_kks
メンバー
メンバー
記事: 11
登録日時: 2017年11月04日(土) 01:31

jpeg拡張子の画像がアップできない。

投稿記事by mod_kks » 2018年2月15日(木) 13:42

yama様、いつもご対応いただきありがとうございます。

if($modx->modx_move_uploaded_file($tmp_name,$target))
この部分ですが、
if($modx->manager->modx_move_uploaded_file($tmp_name,$target))
になるのではないでしょうか。

上記変更して確認してみたのですが、アップロードは上手くできています。
ただ、私の環境ではファイルの削除が上手くできないようで、詳しくは追えてないのですが
やはりアップロード時のパーミッション変更に問題があるように思います。