Thiếu quyền ghi trong thư mục pub / static khi chạy thiết lập bin / magento: nâng cấp


19

Ngày hôm trước, tôi đã cập nhật một mô-đun mới và nó hoạt động bình thường. Bây giờ, khi tôi chạy bin/magento setup:upgrade, tôi nhận được Ngoại lệ bên dưới. Tôi đã thử đặt quyền thành 777 (hoặc 770) cho pubthư mục trong Magento 2 nhưng nó không hoạt động.

  [Ngoại lệ]
  Thiếu quyền ghi vào các thư mục sau: 'pub / static'


bạn đã quản lý để giải quyết vấn đề này? nếu vậy xin vui lòng gửi giải pháp.
Reena Parekh

Bạn có cùng một vấn đề?
Thảo Phạm

vâng tôi đang đối mặt với cùng một vấn đề. Làm thế nào bạn giải quyết nó?
Reena Parekh

Tôi nhận xét một số mã dòng trong lõi. Bạn có muốn làm như tôi?
Thảo Phạm

1
tôi đã đăng bài của tôi trong bài dưới đây. Tôi có thể thử với nó
Thảo Phạm

Câu trả lời:


30

pub/staticThư mục cắt ngắn TL; DR .


Đối với tôi, tôi đã có một bản cài đặt cũ hơn, có thể có một số liên kết tượng trưng và các tệp cũ không còn tồn tại.

Vấn đề checkInstallationFilePermissionslà nó kiểm tra các quyền đệ quy. Tập tin và thư mục. Tôi đã có một liên kết tượng trưng bị thiếu và điều đó trả về sai trong kiểm tra nếu nó có thể ghi được.

Cách gỡ lỗi:

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

  2. Goto dòng 143 trong phương thức checkRecursiveDirectories

  3. Thêm dòng var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Chạy lại bin/magento setup:upgrade

bây giờ bạn sẽ thấy những gì thực sự sai và bạn có thể sửa nó. Cá nhân tôi xóa mọi thứ trongpub/static , đây sẽ là nội dung được tạo tự động, do đó bạn không nên lo lắng về điều đó.


1
Tôi đã xóa hoàn toàn pub / static, sau khi tôi chạy thiết lập: nâng cấp thư mục duy nhất bên trong pub / static là thư mục __Vquirejs. Css bị thiếu, không có kiểu dáng gì cả .... Man .. tôi ước tôi đã không làm điều đó
Lachezar Raychev

Làm thế nào tôi có thể khôi phục mọi thứ trong pub / static?
Lachezar Raychev

2
mọi thứ đang diễn ra rất tốt .... :) tôi thực sự bắt đầu coi thường khuôn khổ này
Lachezar Raychev

3
Nếu bạn xóa nội dung của pub / static, chỉ cần đảm bảo rằng bạn không xóa pub / static / .htaccess vì đây là một phần của cơ sở mã và không được tạo lại: github.com/magento/magento2/tree/2.0/ quán rượu / tĩnh
mttjohnson

Hoàn hảo! Đây là nó ..
Arvind07

11

Tôi gặp phải lỗi này trong quá trình phát triển vì một liên kết tượng trưng bị hỏng.

Tôi đã tạo một tệp trong view/frontend/webthư mục của mô-đun trong developerchế độ được triển khai vào pub/staticthư mục bằng liên kết tượng trưng chỉ vào thư mục của mô-đun nơi tệp gốc được lưu trữ.

Tại một số điểm trong quá trình phát triển, tôi đã xóa tệp khỏi mô-đun của mình, nhưng liên kết tượng trưng vẫn tồn tại khi pub/statictrỏ đến một tệp không còn tồn tại. Tôi hy vọng đây cũng là trường hợp nếu tôi đã đổi tên một trong các tệp.

Nếu một trang web đang ở productionchế độ và đã bin/magento setup:static-content:deploychạy, điều đó thực sự sao chép các tệp vào pub/staticthư mục thay vì tạo các liên kết tượng trưng.

Để tìm liên kết tượng trưng bị hỏng này, tôi đã chạy một lệnh từ shell

find -L . -type l

Loại bỏ liên kết tượng trưng bị hỏng đã giải quyết vấn đề (ví dụ như sử dụng find -L . -type l -exec rm {} \;).


Đây cũng là câu trả lời cho vấn đề của tôi, cảm ơn mttjohnson!
Joshua Soileau

4

Trong thư mục gốc Magento của bạn chạy các lệnh bên dưới và vấn đề của bạn sẽ biến mất:

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

Đã làm cho tôi.


Điều này cũng sẽ xóa .htaccesstập tin. Bạn cần .htaccesstập tin.
Adarsh ​​Khatri

2

Bạn nên thiết lập các quyền như được mô tả trong tài liệu chính thức: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html


1
bạn có thể các quyền thực tế chỉ gây ra trong trường hợp thay đổi url.
rob3000

Tôi thử lại nhưng nó không hoạt động
Thảo Phạm

Đừng quên thực hiện đệ quy thành các thư mục con: pub, pub / static, v.v.
Mage2.PRO

quyền sở hữu cũng quan trọng như quyền; kiểm tra liên kết trên và cũng devdocs.magento.com/guides/v2.0/install-gde/prereq/ . Bạn phải có hai người dùng; một người dùng cục bộ và người dùng máy chủ web
Steve Johnson

toàn bộ ý tưởng thiết lập quyền ở cấp ứng dụng là sai nên tôi nghĩ mọi người nên tránh tài liệu ở phần đó. nó sẽ được cập nhật trong các phiên bản tiếp theo theo các vấn đề về github của họ
Claudiu Creanga

1

Đây là giải quyết tạm thời của tôi. Tôi nhận xét dòng 744 và 466 in <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Đây là mã dòng:

$this->checkInstallationFilePermissions();

Tôi cần giải pháp không thay đổi tập tin cốt lõi.


Vấn đề có thể là do một symlink bị hỏng (được trả lời bên dưới) trong thư mục pub / static. Loại bỏ các liên kết tượng trưng bị hỏng sẽ giải quyết vấn đề mà không sửa đổi các tệp cốt lõi.
mttjohnson


@EnvisionEc Commerce liên kết không hoạt động.
MagePologistso

1

Sửa lỗi cho phép bin / magento bị từ chối

chmod u + x bin / magento



0

Tôi gặp vấn đề tương tự khi tôi không thể cài đặt Magento thông qua dòng lệnh. Đơn giản chỉ cần tạo thư mục đã pub/staticgiải quyết vấn đề.


0

Nếu ai đó đang gặp vấn đề này trên hệ điều hành Windows. Chỉ cần thực hiện lệnh trên dấu nhắc lệnh của Quản trị viên và nó sẽ hoạt động như một bùa mê. Hy vọng điều này sẽ giúp được ai đó.


0

Trong trường hợp của tôi, việc chạy lệnh nâng cấp thông qua người dùng không phải root hoặc người dùng có quyền hạn chế đã gây ra lỗi. Đảm bảo bạn chạy lệnh nâng cấp với người dùng có đủ quyền.


0

Tôi đã xác minh nhiều lần viết quyền và mọi thứ đều tốt.

  1. Tôi nhận xét hàng này, mà ném cho tôi một ngoại lệ.
  2. Sau đó, tôi chạy thiết lập: nâng cấp.
  3. Hoàn nguyên hàng trở lại với ngoại lệ
  4. Vấn đề không sinh sản nữa

0

Chạy lệnh sau, cho ba địa chỉ IP sau:

<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

không sử dụng cái này:

rm -r pub/static

nó sẽ xóa tất cả các tập tin ngay cả .htaccess

bạn có thể sử dụng nó sẽ tốt hơn:

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

sau khi sử dụng:

php bin/magento setup:static-content:deploy en_US -f 

-1

chỉ cần xóa thư mục pub / static khỏi magento2 của bạn

rm -r pub/static

sau đó triển khai nội dung tĩnh của magento2

php bin/magento setup:static-content:deploy

bằng cách sử dụng quá trình này, vấn đề tương tự của tôi đã được giải quyết.


4
Bạn không nên xóa toàn bộ thư mục pub / static vì nó chứa tệp .htaccess rất quan trọng và tệp .htaccess sẽ không được tạo lại trên bất kỳ triển khai nội dung tĩnh nào. Bạn có thể chạy rm -r pub/static/*và nên tránh loại bỏ tệp .htaccess.
mttjohnson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.