Bạn có đang chia sẻ lưu trữ theo bất kỳ cơ hội nào không? Nếu vậy, điều này có thể giúp bạn.
Tôi đã dành hầu hết một ngày làm rối tung xung quanh với Magento Connect Manager 2.0 cố gắng làm cho nó hoạt động với tùy chọn FTP. Tôi thậm chí không thể có được nó để lưu bất kỳ cài đặt của tôi trên tab cài đặt, nó chỉ giữ trở lại mặc định.
Tôi cuối cùng đã theo dõi sự cố xuống để nhấn mạnh vào việc sử dụng sys_get_temp_dir của Magento để xác định thư mục tạm thời. Điều này thường không làm việc trên chia sẻ lưu trữ, vì bạn sẽ không có quyền ghi vào/tmp. Thật không may, không có lỗi tạo ra khi nó không thành công, và Magento chỉ tiếp tục nhưng không lưu hoặc tải các cài đặt của Magento Connect FTP. Tôi đã có một vấn đề tương tự ở nơi khác trong mã lõi trước đây.
Tôi đã tạo một thư mục tạm thời trong cài đặt chính của tôi tại/var/tmp và làm cho nó có thể ghi trên thế giới.
Có 11 địa điểm trong/downloader và/lib/Mage sử dụng chức năng này để xác định thư mục tạm thời. Đây sẽ cần phải được thay đổi để chỉ bất cứ nơi nào bạn quyết định đặt thư mục temp của bạn. Tôi không chắc liệu tất cả chúng có cần thay đổi không, hay chính xác là tất cả những gì họ làm, nhưng tôi đã thay đổi chúng ở bên an toàn. Chi tiết ở cuối bài đăng. Số dòng là gần đúng, nhưng chỉ tìm kiếm sys_get_temp_dir trong mỗi tệp.
Một khi bạn đã thực hiện các thay đổi mà bạn sẽ cần phải đảm bảo rằng các thư mục sau đây là thế giới có thể ghi, đệ quy:
/var/package/tmp/
/downloader/.cache
/media
Mặt tích cực của các tùy chọn FTP là gốc Magento không còn cần có thể ghi được.
Bất kỳ thay đổi nào bên dưới có thể làm hỏng Magento Connect, đặc biệt là những thay đổi được đánh dấu bằng **. Tôi đã thực hiện chúng, và chạy một cài đặt của một mô-đun mà dường như đi OK, nhưng tôi không đảm bảo về chúng. Chúng cũng hơi lộn xộn ở một số nơi, tôi chắc chắn rằng chúng có thể được cải thiện - có thể có cách tốt hơn để nhận magento_root trong một số trường hợp. Hãy cẩn thận, có các tệp có tên tương tự trong các thư mục con khác nhau.
Tuy nhiên, hy vọng họ có thể cứu một người nào đó trải qua những phiền toái mà tôi có ngày hôm nay. Sẽ là một trợ giúp tuyệt vời nếu Varien chỉ viết chức năng tmpDir của riêng họ và cho phép bạn chỉ định thư mục tạm thời trong quản trị viên, tiết kiệm rất nhiều rắc rối. Ah tốt.
downloader \ lib \ Mage \ Connect \ config.php, dòng 207:
// $tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($this->magento_root. '/var/tmp/' ,'config');
downloader \ lib \ Mage \ Connect \ Command \ Registry.php, dòng 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, dòng 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');
Điều này là cần thiết để lưu thay đổi cấu hình của bạn: downloader \ Maged \ Mẫu \ Connect.php, 404:
//$tempFile = tempnam(sys_get_temp_dir(),'config');
$tempFile = tempnam($configObj->magento_root. '/var/tmp/' ,'config');
downloader \ Maged \ Mẫu \ 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 thay đổi còn lại nằm trong tập tin này.
Dòng 96 - Tôi tin rằng đây là một cần thiết để tải thay đổi cấu hình của bạn lên cài đặt màn hình:
// $tempConfigFile = tempnam(sys_get_temp_dir(),'conf');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempConfigFile = tempnam($magento_root . '/var/tmp/' ,'conf');
dòng 111:
// $tempCacheFile = tempnam(sys_get_temp_dir(),'cache');
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
$tempCacheFile = tempnam($magento_root . '/var/tmp/' ,'cache');
Khoảng 135, trước khi câu lệnh if:
$magento_root = dirname(dirname(__FILE__)) . '/../../..';
sau đó trong cả if và các bộ phận khác:
// $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_');
Tệp +1 connect.cfg chứa đường dẫn mã hóa không hợp lệ – snez