万が一、共有ホスティングを利用していますか?もしそうなら、これはあなたを助けるかもしれません。
私は、FTPオプションで動作させるためにMagento ConnectManager2.0をいじり回して一日のほとんどを過ごしました。[設定]タブの設定を保存することすらできませんでした。デフォルトに戻り続けました。
私は最終的に、sys_get_temp_dirを使用して一時ディレクトリを決定するというMagentoの主張まで問題を追跡しました。/ tmpへの書き込みアクセス権がないため、これは通常、共有ホスティングでは機能しません。残念ながら、失敗してもエラーは発生せず、Magentoは続行しますが、MagentoConnectFTP設定を保存またはロードしません。以前、コアコードの他の場所でも同様の問題が発生しました。
メインインストールの下の/var/ tmpに一時フォルダーを作成し、誰でも書き込み可能にしました。
/downloaderと/lib/ Mage内には、この関数を使用して一時フォルダーを判別する11の場所があります。これらは、一時フォルダを配置することにした場所を指すように変更する必要があります。それらすべてを変更する必要があるのか、それとも正確にすべてを変更する必要があるのかはわかりませんが、安全のために変更しました。投稿の最後に詳細があります。行番号は概算ですが、各ファイルでsys_get_temp_dirを検索するだけです。
変更を加えたら、次のフォルダが再帰的に誰でも書き込み可能であることを確認する必要があります。
/var/package/tmp/
/downloader/.cache
/media
FTPオプションのプラス面は、Magentoルートを書き込み可能にする必要がなくなったことです。
以下の変更のいずれか、特に**でマークされたものはMagentoConnectを壊す可能性があります。私はそれらを実行し、問題がないように見えるモジュールの1つのインストールを実行しましたが、それらについて保証するものではありません。また、場所によっては少し面倒ですが、改善できると確信しています。場合によっては、magento_rootを取得するためのより良い方法があるかもしれません。注意してください、異なるサブフォルダに同様の名前のファイルがあります。
それでも、彼らが私が今日持っていた迷惑を経験している誰かを救うかもしれないことを願っています。Varienが独自のtmpDir関数を記述し、管理者で一時フォルダーを指定できるようにして、面倒な作業を大幅に節約できるとしたら、非常に役立ちます。まぁ。
downloader \ lib \ Mage \ Connect \ Config.php、207行目:
// $tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($this->magento_root. '/var/tmp/' ,'config');
downloader \ lib \ Mage \ Connect \ Command \ Registry.php、315行目:
//$localXml = tempnam(sys_get_temp_dir(),'package');
$magento_root = dirname(dirname(__FILE__)) . '/../../../..';
$localXml = tempnam($magento_root. '/var/tmp/' ,'package');
downloader \ lib \ Mage \ Connect \ Loader \ Ftp.php、107行目:
// $tmpDir = sys_get_temp_dir();
$magento_root = dirname(dirname(__FILE__)) . '/../../../..';
$tmpDir = $magento_root . '/var/tmp/';
downloader \ Maged \ Controller.php、869 **:
//$tempFile = tempnam(sys_get_temp_dir(),'maintenance');
$tempFile = tempnam($config->__get('magento_root') . '/var/tmp/' ,'maintenance');
これは、構成の変更を保存するために必要です:
downloader \ Maged \ Model \ Connect.php、404:
//$tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($configObj->magento_root. '/var/tmp/' ,'config');
downloader \ Maged \ Model \ Config \ Abstract.php、88 **:
// $tempFile = tempnam(sys_get_temp_dir(),'configini');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempFile = tempnam($magento_root. '/var/tmp/' ,'configini');
downloader \ lib \ Mage \ Connect\Packager.php-残りの5つの変更はこのファイルにあります。
96行目-これは、構成の変更を設定画面にロードするために必要なものだと思います。
// $tempConfigFile = tempnam(sys_get_temp_dir(),'conf');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempConfigFile = tempnam($magento_root . '/var/tmp/' ,'conf');
111行目:
// $tempCacheFile = tempnam(sys_get_temp_dir(),'cache');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempCacheFile = tempnam($magento_root . '/var/tmp/' ,'cache');
135前後、ifステートメントの前:
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
次に、ifとelseの両方の部分で:
// $configFile=tempnam(sys_get_temp_dir(),'conf');
$configFile = tempnam($magento_root. '/var/tmp/' ,'conf');
158:
//$tempConfigFile = tempnam(sys_get_temp_dir(),'conf_');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempConfigFile = tempnam($magento_root. '/var/tmp/' ,'conf_');