Magento 1.7 の管理画面で画像をアップロードしようとすると、「アップロード HTTP エラー」が発生するようです。メディア フォルダ/ファイル全体を 777 に設定しています。.htaccess 情報は正しく、パスワード保護を使用していません。これはどのブラウザでも発生します。
どんな提案でも大歓迎です!
Magento 1.7 の管理画面で画像をアップロードしようとすると、「アップロード HTTP エラー」が発生するようです。メディア フォルダ/ファイル全体を 777 に設定しています。.htaccess 情報は正しく、パスワード保護を使用していません。これはどのブラウザでも発生します。
どんな提案でも大歓迎です!
この問題の原因はさまざまですが、次のことを試してみてください。
/media ディレクトリとすべてのサブディレクトリに Apache のユーザー グループ (通常は「www-data」または「httpd」) があることを確認します。
sudo chgrp -R www-data /path/to/magento/media
/media ディレクトリとすべてのサブディレクトリに、Apache のユーザー グループに適切な権限が付与されていることを確認します。
sudo chmod -R 775 /path/to/magento/media
[システム] -> [構成] -> [一般] -> [Web] で、[セキュア] と [非セキュア] の両方の下にある [ベース URL] と [ベース メディア URL] が正しいことを確認します。
Magento データベースでは、テーブルcore_config_data
には、{{secure_base_url}}
および{{unsecure_base_url}}
これらの値が正しく、末尾にスラッシュがあることを確認してください。http://example.com/
上記のシステム構成で、生の値の末尾のスラッシュを考慮して、これらの値が正しいことを確認してください。{{secure_base_url}}media
これは、たとえば、スラッシュなしのように見える必要があることを意味します
システム -> キャッシュ管理で、キャッシュを無効にします
お使いのバージョンの Magento の新規ダウンロードから .htaccess ファイルを取得し (ドキュメント ルートの .htaccess ファイル、/media および /media のすべてのサブディレクトリにあるすべての .htaccess ファイルを含む)、現在の .htaccess ファイルをバックアップしてから、明示的に新しい .htaccess ファイルをコピーして置き換えます。
.htaccess は「.」で始まるため .htaccess ファイルを実際にはコピーまたは上書きしていないのに、コピーまたは上書きしたと思われる可能性がある特定の Linux コマンドによって無視されるため、これは慎重に行ってください。
もう一度試してみて、同じエラーが発生した場合は、.htaccess が除外されます。
SSL を使用している場合は、SSL を無効にしてみてください。同じエラーが発生した場合は、SSL が除外されます。
それらのディレクトリに移動しapp/code/local
、app/code/community
それらの名前空間をメモします。次にapp/etc/modules
、メモした名前空間に一致するそのディレクトリ内のすべての *.xml ファイルに移動して、<active>
ノードの次の値で編集します。
<?xml version="1.0"?>
<config>
<modules>
<Namespace_*>
<!-- set this value to "false" -->
<active>false</active>
<!-- more nodes here, just leave every
node alone except <active> -->
</Namespace_*>
</modules>
<config>
もう一度試してみて、同じエラーが発生した場合は、モジュールの競合が除外されます
画像が十分に大きい場合、PHP 設定によって制限される場合があります。
読み込まれた php.ini を特定します。
<?php
phpinfo(); // Look for "Loaded Configuration File"
php.ini を編集します (Ubuntu を使用している場合は、おそらく .ini にありました/etc/php5/apache2/php.ini
)。
sudo vi /path/to/php.ini
# Make these three values higher than the filesize of the images you're
# trying to upload:
upload_max_filesize = 200M
post_max_size = 200M
memory_limit = 200M
ウェブサーバーを再起動します。
sudo /etc/init.d/apache2 restart
ここまでやっても何もうまくいかない場合は、問題の種類を絞り込むためにできる時間のかかる作業を次に示します。
同じ Web サーバーに Magento の新規インストールを作成し、イメージのアップロードをテストします。
それでも機能しない場合は、Apache または PHP の構成 (またはバージョン) に問題があります。
それらが機能する場合は、Magento コア ファイル、Magento 構成、Magento データベース、または Apache 仮想ホストに問題がある可能性があります。次の手順を実行して、次のいずれかを判断してください。
新しいデータベースを作成する
のすべてを削除します。/path/to/new/magento/var/*
sudo rm -rf /path/to/new/magento/var/*
古い Magento 管理者で、 に移動しSystem->Tools->Backups
てクリックしますCreate Backup
。それが完了したら、/path/to/old/magento/var/backup/
作成した新しいデータベースに移動してバックアップを挿入します。
mysql -p -u username database_name < backup_file
新しい Magento ファイル システムで、移動し/path/to/new/magento/app/etc/local.xml
て編集し、新しいデータベースを指すようにします。
<username>{{db_user}}</username>
<password>{{db_pass}}</password>
<dbname>{{db_name}}</dbname>
Magento の新規インストールでイメージのアップロードを再試行します。エラーが発生した場合は、Magento の構成または Magento データベースに問題があります。エラーが発生しない場合、問題は Magento コア ファイルまたは Apache 仮想ホストにありました。
より多くの情報を提供したい場合、おそらく最も有用な部分は、ロードされたphp.ini
、apache2.conf
および/またはhttpd.conf
、および のすべてのサブディレクトリ.htaccess
からのファイルのコピーであり、機密情報はもちろん難読化されています。document root
/media
chjohasbrouck の回答に追加するには、GD PHP 拡張機能が有効になっていないことからもこのエラーが発生する可能性があります。
Apache を使用して Ubuntu にインストールするには、次のようにします。
sudo apt-get install php5-gd
そしてApacheを再起動します。
Ubuntu の詳しい説明はこちら: http://www.cyberciti.biz/faq/ubuntu-linux-install-or-add-php-gd-support-to-apache/
ファイルを使用してルート ディレクトリをパスワードで保護している場合は.htaccess
、この保護を解除してからやり直してください。
内で.htaccess
、次を探します。
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/your/passwd_file
AuthGroupFile /dev/null
require valid-user
これよりもサイトを保護するためのより良い方法が見つかる可能性があるため、セキュリティ設定のニーズを再確認してください.
このエラーの背後にある問題は、間違った許可です。グループを apache/www-data ユーザーに変更し、書き込み権限を変更しても問題が解決しない場合。.httaccess で有効になっている場合は、.htpasswd 認証を無効にして、これらの行にこのコメントを付けます。
#AuthType Basic
#AuthName "Password Protected Area"
#AuthUserFile .htpasswd path
#Require valid-user
同じ問題に対処すると、私の場合、nginx 構成の問題であることがわかりました。
nginx のデフォルトの最大アップロード サイズは 1MB です。大きなファイルをアップロードすると、nginx エラー ログに 413 エラーが表示されますが、Magento は説明のつかない「http アップロード エラー」を通知するだけです。
nginx.conf の http {} セクションのどこかに [client_max_body_size] パラメータを変更または追加します。次の例のように、最大アップロード サイズを 200 MB に設定します。
http {
client_max_body_size 200m;
}
画像ファイル名「dutchman's_pipe.jpg」にアポストロフィが含まれていたため、Magento 1.7 でこの問題が発生しました。このヘルプが他の誰かであることを願っています。
Ubuntu 10.04 サーバーで同じ問題が発生しました。この特定の設定が原因でした。
ここで、このファイルに次の変更を加えました: /etc/apache2/mods-available/fcgid.conf
(変更するには root アクセスが必要です):
FcgidMaxRequestLen 1073741824
Fcgiコマンドの最後の行の後、</IfModule>
ちょうど追加する前のほぼ最後に:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
FcgidConnectTimeout 60
FcgidMaxRequestLen 1073741824
</IfModule>
別の考えられる理由を見つけました。Magento バージョン 1.6.2.0 では、システム --> Web --> セッション REMOTE_ADDR および HTTP_USER_AGENT がアクティブ化されていたため、これが発生しました。両方をもう一度「いいえ」に切り替えると、このエラーは消えました(他に変更はありません!)