項目放在github,做了一個webhook, 自己的伺服器檢測來自github的post,如果master有變動,就執行
cd /path;git pull git@ooxxx.com
上面拉取代碼沒有問題。
最後同時還檢測master分支裡的compoer.json有改動的時候就執行一次:
php composer.phar updatephp composer.phar dump-autoload -o
由於來自github的post資料是用apache指定的www-data 執行 git pull(部署的public key也是這個使用者)發現並不能執行上面的composer操作,我在伺服器上手動操作 composer update 出現下面提示:
···
sudo -u www-data php composer.phar update
Cannot create cache directory /root/.composer/cache/repo/http---packagist.phpcomposer.com/, or directory is not writable. Proceeding without cache
Cannot create cache directory /root/.composer/cache/files/, or directory is not writable. Proceeding without cache
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
···
同樣,我嘗試全域安裝composer,用 php /usr/local/bin/composer update 也是同樣的錯誤。
在GG上面搜尋,嘗試了把 /root/.composer 目錄改成www-data且 777
root@localhost:~# ls -la ~/.composer/cachetotal 20drwxrwxrwx 4 www-data www-data 4096 Dec 30 14:53 .drwxrwxrwx 3 www-data www-data 4096 Dec 30 14:53 ..drwxrwxrwx 2 www-data www-data 4096 Dec 30 14:53 files-rwxrwxrwx 1 www-data www-data 13 Dec 30 14:53 .htaccessdrwxrwxrwx 3 www-data www-data 4096 Dec 30 14:53 repo
除此之外 項目根目錄的composer.phar和/usr/local/bin/composer 擁有者都設定成為了www-data ,問題依舊。
請教怎麼解決。
ps:補充一下,用root 執行 composer update等操作沒有任何問題。
回複內容:
項目放在github,做了一個webhook, 自己的伺服器檢測來自github的post,如果master有變動,就執行
cd /path;git pull git@ooxxx.com
上面拉取代碼沒有問題。
最後同時還檢測master分支裡的compoer.json有改動的時候就執行一次:
php composer.phar updatephp composer.phar dump-autoload -o
由於來自github的post資料是用apache指定的www-data 執行 git pull(部署的public key也是這個使用者)發現並不能執行上面的composer操作,我在伺服器上手動操作 composer update 出現下面提示:
···
sudo -u www-data php composer.phar update
Cannot create cache directory /root/.composer/cache/repo/http---packagist.phpcomposer.com/, or directory is not writable. Proceeding without cache
Cannot create cache directory /root/.composer/cache/files/, or directory is not writable. Proceeding without cache
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
···
同樣,我嘗試全域安裝composer,用 php /usr/local/bin/composer update 也是同樣的錯誤。
在GG上面搜尋,嘗試了把 /root/.composer 目錄改成www-data且 777
root@localhost:~# ls -la ~/.composer/cachetotal 20drwxrwxrwx 4 www-data www-data 4096 Dec 30 14:53 .drwxrwxrwx 3 www-data www-data 4096 Dec 30 14:53 ..drwxrwxrwx 2 www-data www-data 4096 Dec 30 14:53 files-rwxrwxrwx 1 www-data www-data 13 Dec 30 14:53 .htaccessdrwxrwxrwx 3 www-data www-data 4096 Dec 30 14:53 repo
除此之外 項目根目錄的composer.phar和/usr/local/bin/composer 擁有者都設定成為了www-data ,問題依舊。
請教怎麼解決。
ps:補充一下,用root 執行 composer update等操作沒有任何問題。
www-data
沒有許可權讀寫 /root
目錄。
改下緩衝目錄。
https://getcomposer.org/doc/03-cli.md#composer-cache-dir