您是否有共享主機?如果是這樣,這可能會幫助你。
我剛剛花了大部分時間與Magento Connect Manager 2.0混合在一起,試圖讓它與FTP選項一起工作。我甚至無法保存設置選項卡上的任何設置,只是保持恢復到默認設置。
我最終將問題追蹤到Magento堅持使用sys_get_temp_dir來確定臨時目錄。這通常不適用於共享主機,因爲您將不具有對/ tmp的寫入權限。不幸的是,當它失敗時沒有產生錯誤,而Magento只是繼續進行,但不保存或加載Magento Connect FTP設置。之前我在覈心代碼的其他地方也遇到類似的問題。
我在我的主要安裝位置/ var/tmp下創建了一個臨時文件夾,並使其成爲全局可寫的。
在/下載器和/ lib/Mage中有11個地方使用此函數來確定臨時文件夾。這些將需要更改爲指向您決定放置臨時文件夾的任何位置。我不確定是否所有這些都需要改變,或者確切地說他們都做了什麼,但是我改變了他們的安全意識。詳細信息在帖子末尾。行號是近似的,但只是在每個文件中搜索sys_get_temp_dir。
一旦你所做的更改,您需要確保下列文件夾是世界寫的,遞歸:
/var/package/tmp/
/downloader/.cache
/media
FTP選項的正側是Magento的根不再需要可寫。
以下任何更改可能會中斷Magento Connect,特別是標有**的那些更改。我已經完成了它們,並運行了一個模塊,但似乎沒有問題,但我對它們沒有任何保證。他們在某些地方也有點混亂,我相信他們可以改進 - 在某些情況下,獲得magento_root可能會更好。小心,在不同的子文件夾中有類似的命名文件。
不過,希望他們能挽救一個正在經歷我今天討厭的人。如果Varien只編寫他們自己的tmpDir函數並讓你在管理員中指定一個臨時文件夾,將會非常有幫助,省去很多麻煩。呃,好吧。
下載\ LIB \法師\連接\ config.php文件,行207:
// $tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($this->magento_root. '/var/tmp/' ,'config');
下載\ LIB \法師\連接\ COMMAND \註冊表。PHP,線315:
//$localXml = tempnam(sys_get_temp_dir(),'package');
$magento_root = dirname(dirname(__FILE__)) . '/../../../..';
$localXml = tempnam($magento_root. '/var/tmp/' ,'package');
下載\ lib中\法師\連接\裝載機\ Ftp.php,線107:
// $tmpDir = sys_get_temp_dir();
$magento_root = dirname(dirname(__FILE__)) . '/../../../..';
$tmpDir = $magento_root . '/var/tmp/';
下載\馬吉德阿卜\ Controller.php這樣,869 **:
//$tempFile = tempnam(sys_get_temp_dir(),'maintenance');
$tempFile = tempnam($config->__get('magento_root') . '/var/tmp/' ,'maintenance');
這一個是必要的,以保存配置的變化: 下載\馬吉德阿卜\模型\ Connect.php,404:
//$tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($configObj->magento_root. '/var/tmp/' ,'config');
下載\馬吉德阿卜\模型\配置\ Abstract.php,88 **:
// $tempFile = tempnam(sys_get_temp_dir(),'configini');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempFile = tempnam($magento_root. '/var/tmp/' ,'configini');
下載\ 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-140,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_');
+1 connect.cfg文件包含一個硬編碼路徑無效 – snez