Tidak ada izin menulis di pub direktori / statis ketika menjalankan pengaturan bin / magento: upgrade

19

Sehari sebelumnya, saya memperbarui modul baru dan berfungsi normal. Sekarang, ketika saya berlari bin/magento setup:upgrade, saya menerima Pengecualian di bawah ini. Saya mencoba mengatur izin ke 777 (atau 770) untuk pubfolder di Magento 2 tetapi tidak berfungsi.

  [Pengecualian]
  Tidak ada izin menulis ke direktori berikut: 'pub / static'

Thao Pham
sumber
apakah Anda berhasil menyelesaikan masalah ini? jika demikian tolong posting solusinya.
Reena Parekh
Apakah Anda memiliki masalah yang sama?
Thao Pham
ya saya menghadapi masalah yang sama. bagaimana kamu mengatasinya?
Reena Parekh
Saya berkomentar beberapa kode baris pada intinya. Apakah Anda ingin melakukan seperti saya?
Thao Pham
1
saya memposting relsove saya di posting di bawah ini. Saya bisa mencobanya
Thao Pham

Jawaban:

30

pub/staticFolder terpotong TL; DR .


Bagi saya, saya memiliki instalasi yang lebih lama, yang mungkin memiliki beberapa symlink dan file lama yang tidak ada lagi.

Masalahnya checkInstallationFilePermissionsadalah bahwa ia memeriksa izin secara rekursif. File dan folder. Saya memiliki symlink yang hilang, dan itu mengembalikan false pada cek jika itu dapat ditulis

Cara debug:

  1. setup/src/Magento/Setup/Model/FilePermissions.php

  2. Goto line 143 dalam metode checkRecursiveDirectories

  3. Tambahkan garis var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Jalankan kembali bin/magento setup:upgrade

sekarang Anda akan melihat apa yang sebenarnya salah, dan Anda dapat memperbaikinya. Secara pribadi saya menghapus semuanyapub/static , ini akan menjadi konten yang dibuat secara otomatis sehingga Anda tidak perlu khawatir tentang itu.

Michal-sk
sumber
1
Saya menghapus pub / statis sepenuhnya, setelah saya menjalankan pengaturan: perbarui satu-satunya folder di dalam pub / statis adalah folder __requirejs. Css tidak ada, tidak ada gaya apa pun .... Man .. saya harap saya belum melakukan itu
Lachezar Raychev
bagaimana cara mengembalikan semua yang ada di pub / statis?
Lachezar Raychev
2
semuanya berjalan dengan sangat baik .... :) saya benar-benar mulai membenci kerangka ini
Lachezar Raychev
3
Jika Anda menghapus konten pub / statis, pastikan Anda tidak menghapus pub / static / .htaccess karena merupakan bagian dari basis kode dan tidak dapat dibuat ulang: github.com/magento/magento2/tree/2.0/ pub / statis
mttjohnson
Perfecto! Ini dia ..
Arvind07
11

Saya mengalami kesalahan dalam pengembangan ini karena tautan simbolis yang rusak.

Saya telah membuat file dalam view/frontend/webdirektori modul yang dalam developermode dikerahkan ke pub/staticdirektori menggunakan tautan simbolis yang menunjuk ke direktori modul tempat file asli disimpan.

Pada titik tertentu dalam pengembangan saya menghapus file dari modul saya, tetapi tautan simbolis masih ada dalam pub/staticmenunjuk ke file yang tidak lagi ada. Saya berharap ini juga akan terjadi jika saya telah mengganti nama salah satu file.

Jika situs dalam productionmode dan telah bin/magento setup:static-content:deployberjalan, itu sebenarnya menyalin file ke pub/staticdirektori alih-alih membuat tautan simbolis.

Untuk menemukan tautan simbolis yang rusak ini saya menjalankan perintah dari shell

find -L . -type l

Menghapus tautan simbolis yang rusak menyelesaikan masalah (misalnya menggunakan find -L . -type l -exec rm {} \;).

mttjohnson
sumber
Ini adalah jawaban untuk masalah saya juga, terima kasih mttjohnson!
Joshua Soileau
4

Di dalam direktori root Magento Anda jalankan perintah di bawah ini dan masalah Anda akan hilang:

$ rm -rf pub/static/*
$ php bin/magento setup:static-content:deploy

Bekerja untukku.

medina
sumber
Ini juga akan menghapus .htaccessfile. Anda membutuhkan .htaccessfile.
Adarsh ​​Khatri
2

Anda harus mengatur izin seperti yang dijelaskan dalam dokumentasi resmi: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html

Mage2.PRO
sumber
1
dapatkah Anda izin yang sebenarnya hanya menyebabkan seandainya url berubah.
rob3000
Saya mencoba lagi tetapi tidak berhasil
Thao Pham
Jangan lupa untuk melakukannya secara rekursif ke dalam subdirektori: pub, pub / static, dll.
Mage2.PRO
kepemilikan sama pentingnya dengan izin; periksa tautan di atas dan juga devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Anda harus memiliki dua pengguna; pengguna lokal dan pengguna server web
Steve Johnson
seluruh ide pengaturan izin pada level aplikasi salah jadi saya pikir orang harus menghindari dokumentasi di bagian itu. itu akan diperbarui dalam versi berikutnya sesuai dengan masalah github mereka
Claudiu Creanga
1

Ini adalah sementara saya diselesaikan. Saya berkomentar di baris 744 dan 466 di <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Ini adalah kode baris:

$this->checkInstallationFilePermissions();

Saya butuh solusi jangan ubah file inti.

Thao Pham
sumber
Masalahnya kemungkinan karena symlink rusak (dijawab di bawah) di bawah direktori pub / static. Menghapus symlink yang rusak harus menyelesaikan masalah tanpa memodifikasi file inti.
mttjohnson
newtips.co/magento/questions/91184/... Ini akan berhasil
Envision Ecommerce
@EnvisionEcommerce tautannya tidak berfungsi.
MagePsycho
1

Perbaiki izin bin / magento ditolak

chmod u + x bin / magento

Gentzy
sumber
0

Saya memiliki masalah yang sama di mana saya tidak dapat menginstal Magento melalui baris perintah. Cukup membuat folder pub/staticmenyelesaikan masalah.

Quinten
sumber
0

Jika seseorang mengalami masalah ini di os Windows. Cukup jalankan perintah pada prompt perintah Administrator dan itu akan bekerja seperti pesona. Semoga ini bisa membantu seseorang.

Lakshin Karunaratne
sumber
0

Dalam kasus saya menjalankan perintah peningkatan melalui pengguna non-root atau pengguna dengan izin terbatas menyebabkan kesalahan. Pastikan Anda menjalankan perintah pemutakhiran dengan pengguna dengan izin yang cukup.

Arvind07
sumber
0

Saya memverifikasi berkali-kali menulis izin dan semuanya baik-baik saja.

  1. Saya berkomentar baris ini, yang melemparkan saya pengecualian.
  2. Kemudian saya menjalankan pengaturan: peningkatan.
  3. Kembalikan baris dengan pengecualian
  4. Masalah tidak mereproduksi lagi
zhartaunik
sumber
0

Jalankan perintah berikut, untuk tiga alamat IP berikut:

<Magento-Directory>php bin\magento maintenance:allow-ips 127.0.0.1, 
<Magento-Directory>php bin\magento maintenance:allow-ips "the ip of my localhost given by the NAT-Router" and
<Magento-Directory>php bin\magento maintenance:allow-ips  "the ip of the NAT-Router" 
Berega
sumber
0

jangan gunakan ini:

rm -r pub/static

itu akan menghapus semua file bahkan .htaccess

Anda dapat menggunakan ini lebih baik:

rm -rf pub/static/frontend
rm -rf pub/static/adminhtml

setelah itu gunakan:

php bin/magento setup:static-content:deploy en_US -f 
Aqeel Hussein
sumber
-1

hapus saja folder pub / statis dari magento2 Anda

rm -r pub/static

kemudian gunakan konten statis dari magento2

php bin/magento setup:static-content:deploy

dengan menggunakan proses ini masalah saya yang sama diselesaikan.

Abhishek
sumber
4
Anda tidak boleh menghapus seluruh pub / direktori statis karena mengandung file .htaccess yang penting, dan file .htaccess tidak akan dibuat ulang pada penyebaran konten statis. Anda dapat menjalankan rm -r pub/static/*dan itu harus menghindari menghapus file .htaccess.
mttjohnson