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'


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.


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 {} \;).


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.


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


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.


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


@EnvisionEcommerce tautannya tidak berfungsi.
MagePsycho

1

Perbaiki izin bin / magento ditolak

chmod u + x bin / magento



0

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


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.


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.


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

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" 

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 

-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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.