magento管理パネルで画像をアップロードできず、「宛先フォルダーが書き込み可能でないか、存在しません」というエラーが発生します。最近、すべてのファイルを1つのホスティングから別のホスティングに移動しました。これに対する解決策はありますか?
magento管理パネルで画像をアップロードできず、「宛先フォルダーが書き込み可能でないか、存在しません」というエラーが発生します。最近、すべてのファイルを1つのホスティングから別のホスティングに移動しました。これに対する解決策はありますか?
回答:
プロジェクトでファイルlib/Varien/File/Uploader.php
を開きMage::log()
、save()
関数内に配置します。
public function save($destinationFolder, $newFileName = null)
{
$this->_validateFile();
if ($this->_allowCreateFolders) {
$this->_createDestinationFolder($destinationFolder);
}
if (!is_writable($destinationFolder)) {
// Put a mage::log() and check what is the folder magento is looking for.
Mage::log($destinationFolder);
throw new Exception('Destination folder is not writable or does not exists.');
}
...
}
ログから、Magentoが探しているフォルダーを見つけることができます。次に、そのフォルダーのアクセス許可を確認します。
Magento 2でも同じエラーが発生します。これは、この場合のエラーの原因となったファイルです。
vendor/magento/framework/File/Uploader.php
行に256
このコードを一時的に配置して、書き込み不可/存在しないフォルダーを取得できます。
if( !is_writable($destinationFolder) ) {
// throw new Exception('Destination folder is not writable or does not exists.');
throw new Exception($destinationFolder);
}
それ以外の場合は、これらのフォルダーが存在し、Webサーバーから書き込み可能かどうかを確認します。
pub/media/catalog/
pub/media/catalog/category
pub/media/catalog/product
pub/media/images
pub/media/wysiwyg/
私にとって問題は作ることによって解決されました
pub / media / tmp
Webサーバーによって書き込み可能
「pub / media」ディレクトリの下の次のフォルダも書き込み可能です
- banners
- catalog
- images
- wysiwyg
何回かこの問題に遭遇し、権限を確認した後のサーバーではなく、通常はイメージファイル自体であることを忘れてしまいました。寸法またはファイルサイズが大きすぎるため、画像をアップロードできませんでした。
私にとっての解決策は:
アップロードする前に、HIGH-REZ写真を縮小してください。
magentoの最大解像度を上げるか、画像をアップロードします System > Catalog > Product Image
メディアフォルダーmedia / tmp / catalog / productが存在することを確認し、「そのディレクトリをウェブサーバーから書き込み可能にする」
777
「そして、そのディレクトリをウェブサーバーから書き込み可能にする」と言う方が良いでしょう。Webサーバーが画像を書き込むことができるようにするために、すべてのユーザーに書き込みアクセス権を与える必要はないという考え方です。(私が反対票を投じたのは私ではありませんが、疑問に思った場合に備えて、これが理由であると考えられます)
777権限のあるメディアフォルダーを確認してください。コンパイルモードを有効にしている場合は、777権限のあるフォルダーも確認してください。
これらのフォルダーに777のアクセス許可を与えた後、問題は解決しました。