ページ 11

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

Posted: 2018年2月01日(木) 13:52
by mojira
いつもお世話になっております。

リソース編集時の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
/*****************************/

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

Posted: 2018年2月08日(木) 01:59
by mod_kks
エラーが出た後、ファイルブラウザをリロードするとおそらく画像自体はアップされていて、
拡張子は「.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;」でも問題ないかも。

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

Posted: 2018年2月08日(木) 12:35
by mojira
mod_kksさん ありがとうございます。
拡張子は「.jpeg」から「.jpg」に変わっているのではないかと思いますがいかがでしょうか。

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

解決方法もご教授頂き感謝です。
プログラムは全然詳しくないのですが、頂いた内容を元に書換えて見たいと思います。

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

Posted: 2018年2月14日(水) 11:09
by yama
なるほどですね。ファイルブラウザ側のchmodを廃止するのがスマートだと思うので、後ほど修正します。

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

Posted: 2018年2月14日(水) 12:42
by yama
https://github.com/modxcms-jp/evolution ... evelop.zip
修正しました。managerフォルダを上書きしていただいてよいでしょうか?

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

Posted: 2018年2月15日(木) 13:42
by mod_kks
yama様、いつもご対応いただきありがとうございます。

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

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