Saya mencoba menginstal Prestissimo ke server Ubuntu 16.04, tetapi itu menyebabkan kesalahan:
$ composer global require "hirak/prestissimo:^0.3"
Changed current directory to /home/kramer65/.composer
[ErrorException]
file_put_contents(./composer.json): failed to open stream: Permission denied
require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...
Saya masuk sebagai pengguna kramer65
, jadi saya tidak tahu mengapa itu tidak dapat menulis ke folder rumah saya. Reaksi normal saya terhadap a permission denied
adalah menggunakan sudo
, tetapi komposer selalu berkata:
Jangan menjalankan Composer sebagai root / super user! Lihat https://getcomposer.org/root untuk detailnya
Ada ide bagaimana saya bisa mengatasi ini?
composer.json
?~/.composer/composer.json
file.~/.composer/
folder?kramer65
Sepertinya tidak punya hak untuk menulis,chmod
bisa bermanfaat.~/.composer/
dimiliki olehroot
. Tetapi saya baru saja memeriksa beberapa sistem lain dan menginstal komposer pada Ubuntu 16.04 VM baru yang segar, dan itu selalu dimiliki olehroot
. Tentu saja saya bisachmod
atauchown
itu, tetapi apakah itu ide yang baik untuk mengubah perilaku default ini?755
mode. Jadi, ganti pemilik mungkin bukanlah solusi.Jawaban:
Saya mengalami masalah ini untuk menginstal laravel / lumen.
Ini dapat diatasi dengan perintah berikut:
sumber
~/.composer
Untuk mengatasi ini, Anda harus membuka jendela terminal dan mengetik perintah ini:
sudo chown -R user ~/.composer
(denganuser
menjadi pengguna Anda saat ini, dalam kasus Anda,kramer65
)Setelah Anda menjalankan perintah ini, Anda harus memiliki izin untuk menjalankan perintah komposer global Anda.
Anda mungkin juga perlu menghapus file .composer dari direktori saat ini, untuk melakukan ini buka jendela terminal dan ketik perintah ini:
sudo rm -rf .composer
sumber
Dalam kasus saya,
.composer
dimiliki oleh root, jadi saya melakukannyasudo rm -fr .composer
dan kemudian kebutuhan global saya berhasil.Berhati-hatilah! Anda tidak ingin menggunakan perintah itu jika Anda tidak yakin apa yang Anda lakukan.
sumber
Saya menghadapi masalah ini juga tetapi dalam kasus saya, saya berada di direktori yang salah. Periksa direktori tempat Anda bekerja
sumber
Dalam kasus saya, saya tidak memiliki masalah dengan
~/.composer
.Jadi berada di dalam folder root aplikasi Laravel, saya melakukannya
sudo chown -R $USER composer.lock
dan itu sangat membantu.sumber
Ini mungkin kasus super edge, tetapi jika Anda menggunakan Travis CI dan memanfaatkan caching, Anda mungkin ingin menghapus semua cache dan mencoba lagi.
Memperbaiki masalah saya ketika saya beralih dari sudo ke non sudo build.
sumber
Saya mendapatkan pengecualian yang sama, tetapi dalam kasus saya, saya menggunakan PowerShell untuk menjalankan perintah Jadi, saya memperbaikinya dengan instruksi untuk membuka blokir beberapa file terlebih dahulu.
PS C:\> dir C:\executable_file_Path\*PowerShell* | Unblock-File
dan kemudian gunakan yang berikut ini untuk memuat paket& 'C:\path_to_executable\php.exe' "c:\path_to_composer_.phar_file\composer.phar "require desired/package
sumber
Dalam kasus saya, saya biasa
sudo mkdir projectFolder
membuat folder. Itu dimiliki oleh pengguna root dan saya masuk menggunakan pengguna non-root.Jadi saya mengubah izin folder menggunakan perintah
sudo chown mynonrootuser:mynonrootuser projectFolder
dan kemudian berfungsi dengan baik.sumber