Làm cách nào để thiết lập quyền đối với tệp cho Laravel?

274
Robo Robok 2015-06-04 22:49.

Tôi đang sử dụng Máy chủ web Apache có chủ sở hữu được đặt thành _www:_www. Tôi không bao giờ biết đâu là phương pháp hay nhất với quyền đối với tệp, chẳng hạn như khi tôi tạo dự án Laravel 5 mới.

Laravel 5 yêu cầu /storagethư mục có thể ghi được. Tôi đã tìm thấy nhiều cách tiếp cận khác nhau để làm cho nó hoạt động và tôi thường kết thúc với việc làm cho nó 777chmod đệ quy. Tôi biết đó không phải là ý tưởng tốt nhất.

Tài liệu chính thức nói:

Laravel có thể yêu cầu một số quyền được cấu hình: các thư mục bên trong storagevendoryêu cầu quyền ghi bởi máy chủ web.

Nó có nghĩa là máy chủ web cũng cần quyền truy cập vào chính storagevendorcác thư mục hay chỉ nội dung hiện tại của chúng?

Tôi giả định rằng điều tốt hơn nhiều là thay đổi chủ sở hữu thay vì quyền. Tôi đã thay đổi tất cả các quyền đối với tệp của Laravel một cách đệ quy _www:_wwwvà điều đó làm cho trang web hoạt động chính xác, như thể tôi đã thay đổi chmod thành 777. Vấn đề là bây giờ trình soạn thảo văn bản của tôi yêu cầu tôi nhập mật khẩu mỗi khi tôi muốn lưu bất kỳ tệp nào và điều tương tự cũng xảy ra nếu tôi cố gắng thay đổi bất kỳ thứ gì trong Finder, chẳng hạn như sao chép một tệp.

Cách tiếp cận chính xác để giải quyết những vấn đề này là gì?

  1. Thay đổi chmod
  2. Thay đổi chủ sở hữu của các tệp để phù hợp với chủ sở hữu của máy chủ web và có thể đặt trình soạn thảo văn bản (và Trình tìm kiếm?) Để bỏ qua yêu cầu nhập mật khẩu hoặc sử dụng chúng sudo
  3. Thay đổi chủ sở hữu của máy chủ web để phù hợp với người dùng hệ điều hành (tôi không biết hậu quả)
  4. Thứ gì khác

14 answers

673
bgies 2016-05-17 16:57.

Chỉ để nói rõ ràng cho bất kỳ ai đang xem cuộc thảo luận này .... nếu bạn cấp cho bất kỳ thư mục nào của mình 777 quyền, bạn đang cho phép BẤT CỨ AI đọc, ghi và thực thi bất kỳ tệp nào trong thư mục đó .... điều này có nghĩa là bạn đã cấp BẤT CỨ AI (bất kỳ tin tặc hoặc kẻ độc hại nào trên toàn thế giới) được phép tải lên BẤT KỲ tệp, vi rút hoặc bất kỳ tệp nào khác và THÌ thực thi tệp đó ...

NẾU BẠN ĐANG THIẾT LẬP GIẤY PHÉP THƯ MỤC CỦA MÌNH CHO 777, BẠN ĐÃ MỞ MÁY CHỦ CỦA BẠN CHO BẤT KỲ AI CÓ THỂ TÌM THẤY DANH MỤC ĐÓ. Đủ rõ ràng chưa ??? :)

Về cơ bản có hai cách để thiết lập quyền sở hữu và quyền của bạn. Bạn tự cho mình quyền sở hữu hoặc bạn đặt máy chủ web làm chủ sở hữu của tất cả các tệp.

Máy chủ trang web với tư cách là chủ sở hữu (cách hầu hết mọi người làm và cách của tài liệu Laravel):

giả sử www-data (nó có thể là một cái gì đó khác) là người dùng máy chủ web của bạn.

sudo chown -R www-data: www-data / path / to / your / laravel / root / directory

nếu bạn làm điều đó, máy chủ web sở hữu tất cả các tệp và cũng là nhóm, và bạn sẽ gặp một số vấn đề khi tải tệp lên hoặc làm việc với tệp qua FTP, vì máy khách FTP của bạn sẽ đăng nhập với tư cách là bạn chứ không phải máy chủ web của bạn, vì vậy hãy thêm người dùng của bạn vào nhóm người dùng máy chủ web:

sudo usermod -a -G www-data ubuntu

Tất nhiên, điều này giả định rằng máy chủ web của bạn đang chạy dưới dạng www-data (mặc định của Homestead) và người dùng của bạn là ubuntu (nó là mơ hồ nếu bạn đang sử dụng Homestead).

Sau đó, bạn đặt tất cả các thư mục của mình thành 755 và các tệp của bạn thành 644 ... ĐẶT quyền đối với tệp

sudo find / path / to / your / laravel / root / directory -type f -exec chmod 644 {} \;    

ĐẶT quyền thư mục

sudo find / path / to / your / laravel / root / directory -type d -exec chmod 755 {} \;

Người dùng của bạn với tư cách là chủ sở hữu

Tôi thích sở hữu tất cả các thư mục và tệp (nó giúp làm việc với mọi thứ dễ dàng hơn nhiều), vì vậy tôi làm:

sudo chown -R my-user: www-data / path / to / your / laravel / root / directory

Sau đó, tôi cấp cho cả bản thân và máy chủ web quyền:

sudo find / path / to / your / laravel / root / directory -type f -exec chmod 664 {} \;    
sudo find / path / to / your / laravel / root / directory -type d -exec chmod 775 {} \;

Sau đó, cấp cho máy chủ web quyền đọc và ghi vào bộ nhớ và bộ nhớ cache

Cho dù bạn thiết lập nó theo cách nào, thì bạn cần phải cấp quyền đọc và ghi cho máy chủ web để lưu trữ, bộ nhớ cache và bất kỳ thư mục nào khác mà máy chủ web cần tải lên hoặc ghi (tùy thuộc vào tình huống của bạn), vì vậy hãy chạy các lệnh từ cơ sở ở trên:

sudo chgrp -R www-data storage bootstrap / cache
sudo chmod -R ug + rwx storage bootstrap / cache

Bây giờ, bạn được bảo mật và trang web của bạn hoạt động VÀ bạn có thể làm việc với các tệp khá dễ dàng

51
BassMHL 2015-06-10 17:02.

Các quyền đối với storagevendorcác thư mục nên được giữ nguyên 775, vì lý do bảo mật rõ ràng.

Tuy nhiên, cả máy tính và máy chủ Apache của bạn đều cần có khả năng ghi trong các thư mục này. Ví dụ: khi bạn chạy các lệnh như php artisan, máy tính của bạn cần ghi vào tệp nhật ký storage.

Tất cả những gì bạn cần làm là cấp quyền sở hữu các thư mục cho Apache:

sudo chown -R www-data:www-data /path/to/your/project/vendor
sudo chown -R www-data:www-data /path/to/your/project/storage

Sau đó, bạn cần thêm máy tính của mình (được tham chiếu bởi nó username) vào nhóm mà máy chủ Apache thuộc về. Như vậy:

sudo usermod -a -G www-data userName

LƯU Ý: Thường xuyên nhất groupNamewww-datanhưng trong trường hợp của bạn, hãy thay thế nó bằng_www

26
Chris Schwerdt 2016-12-22 07:04.

Chúng tôi đã gặp phải nhiều trường hợp phức tạp khi thiết lập quyền cho các ứng dụng Laravel. Chúng tôi tạo một tài khoản người dùng riêng ( deploy) để sở hữu thư mục ứng dụng Laravel và thực thi các lệnh Laravel từ CLI và chạy máy chủ web bên dưới www-data. Một vấn đề mà điều này gây ra là (các) tệp nhật ký có thể thuộc sở hữu của www-datahoặc deploy, tùy thuộc vào người đã viết vào tệp nhật ký trước, rõ ràng là ngăn người dùng khác ghi vào tệp đó trong tương lai.

Tôi thấy rằng giải pháp an toàn và lành mạnh duy nhất là sử dụng các ACL Linux. Mục tiêu của giải pháp này là:

  1. Để cho phép người dùng sở hữu / triển khai ứng dụng truy cập đọc và ghi vào mã ứng dụng Laravel (chúng tôi sử dụng người dùng có tên deploy).
  2. Để cho phép www-datangười dùng đọc quyền truy cập vào mã ứng dụng Laravel, nhưng không cho phép truy cập ghi.
  3. Để ngăn bất kỳ người dùng nào khác truy cập vào mã / dữ liệu ứng dụng Laravel.
  4. Để cho phép cả www-datangười dùng và người dùng ứng dụng ( deploy) ghi quyền truy cập vào thư mục lưu trữ, bất kể người dùng nào sở hữu tệp ( ví dụ: cả hai deploywww-datacó thể ghi vào cùng một tệp nhật ký).

Chúng tôi thực hiện điều này như sau:

  1. Tất cả các tệp trong application/thư mục được tạo bằng umask mặc định 0022, điều này dẫn đến các thư mục có drwxr-xr-xquyền và tệp có quyền -rw-r--r--.
  2. sudo chown -R deploy:deploy application/(hoặc đơn giản là triển khai ứng dụng của bạn với tư cách là deployngười dùng, đó là những gì chúng tôi làm).
  3. chgrp www-data application/để cấp cho www-datanhóm quyền truy cập vào ứng dụng.
  4. chmod 750 application/để cho phép deployngười dùng đọc / ghi, www-datangười dùng chỉ đọc và xóa tất cả các quyền đối với bất kỳ người dùng nào khác.
  5. setfacl -Rdm u:www-data:rwx,u:deploy:rwx application/storage/để đặt các quyền mặc định trên storage/thư mục và tất cả các thư mục con. Mọi thư mục / tệp mới được tạo trong thư mục lưu trữ sẽ kế thừa các quyền này ( rwxcho cả www-datadeploy).
  6. setfacl -Rm u:www-data:rwX,u:deploy:rwX application/storage/ để đặt các quyền trên trên bất kỳ tệp / thư mục hiện có nào.
19
Bogdan 2015-06-04 23:01.

Thay đổi quyền cho thư mục dự án của bạn để bật đọc / ghi / thực thi cho bất kỳ người dùng nào trong nhóm sở hữu thư mục (trong trường hợp của bạn là _www):

chmod -R 775 /path/to/your/project

Sau đó, thêm tên người dùng OS X của bạn vào _wwwnhóm để cho phép nhóm truy cập vào thư mục:

sudo dseditgroup -o edit -a yourusername -t user _www
10
Siddharth Joshi 2017-06-07 01:40.

Hầu hết các thư mục phải là "755" bình thường và các tệp, "644"

Laravel yêu cầu một số thư mục có thể ghi được cho người dùng máy chủ web. Bạn có thể sử dụng lệnh này trên hệ điều hành dựa trên unix.

sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
9
Davron Achilov 2018-10-09 21:55.

Thêm vào composer.json

"scripts": {
    "post-install-cmd": [
      "chgrp -R www-data storage bootstrap/cache",
      "chmod -R ug+rwx storage bootstrap/cache"
    ]
}

Sau composer install

8
Stanislav Potapenko 2016-06-02 05:49.

Như đã đăng

Tất cả những gì bạn cần làm là cấp quyền sở hữu các thư mục cho Apache:

nhưng tôi đã thêm -R cho lệnh chown : sudo chown -R www-data:www-data /path/to/your/project/vendor sudo chown -R www-data:www-data /path/to/your/project/storage

8
Luca C. 2020-02-13 06:17.

Điều này đã làm việc cho tôi:

cd [..LARAVEL PROJECT ROOT]
sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;
sudo chmod -R 777 ./storage
sudo chmod -R 777 ./bootstrap/cache/

Chỉ khi bạn sử dụng npm (VUE, biên dịch SASS, v.v.), hãy thêm vào:

sudo chmod -R 777 ./node_modules/

Những gì nó làm:

  • Thay đổi tất cả các quyền đối với tệp thành 644
  • Thay đổi tất cả các quyền của thư mục thành 755
  • Đối với bộ nhớ cache lưu trữ và bootstrap (các thư mục đặc biệt được laravel sử dụng để tạo và thực thi tệp, không có sẵn từ bên ngoài), hãy đặt quyền thành 777, cho bất kỳ thứ gì bên trong
  • Đối với tệp thực thi nodeJS, tương tự như trên

Lưu ý: Có thể bạn không thể hoặc không cần làm điều đó với tiền tố sudo. nó phụ thuộc vào quyền của người dùng, nhóm, v.v.

6
Ryan 2017-05-27 11:35.

Tài liệu Laravel 5.4 cho biết:

Sau khi cài đặt Laravel, bạn có thể cần phải cấu hình một số quyền. Các thư mục bên trong storagevà các bootstrap/cachethư mục phải được máy chủ web của bạn ghi được nếu không Laravel sẽ không chạy. Nếu bạn đang sử dụng máy ảo Homestead, các quyền này đã được đặt sẵn.

Có rất nhiều câu trả lời trên trang này đề cập đến việc sử dụng 777quyền. Đừng làm vậy. Bạn sẽ phơi bày bản thân trước tin tặc.

Thay vào đó, hãy làm theo đề xuất của những người khác về cách đặt quyền 755 (hoặc hạn chế hơn). Bạn có thể cần phải tìm ra người dùng nào mà ứng dụng của bạn đang chạy bằng cách chạy whoamitrong thiết bị đầu cuối và sau đó thay đổi quyền sở hữu các thư mục nhất định bằng cách sử dụng chown -R.

Nếu bạn không được phép sử dụng sudovì rất nhiều câu trả lời khác yêu cầu ...

Máy chủ của bạn có thể là một máy chủ được chia sẻ như Cloudways.

(Trong trường hợp của tôi, tôi đã nhân bản ứng dụng Laravel của mình vào một máy chủ Cloudways thứ hai của tôi và nó không hoàn toàn hoạt động vì quyền của các thư mục storagebootstrap/cachethư mục bị lộn xộn.)

Tôi cần sử dụng:

Cloudways Platform > Server > Application Settings > Reset Permission

Sau đó, tôi có thể chạy php artisan cache:cleartrong thiết bị đầu cuối.

6
markdwhite 2016-12-06 17:16.

Giải pháp được đăng bởi bgles phù hợp với tôi về việc thiết lập quyền chính xác ban đầu (tôi sử dụng phương pháp thứ hai), nhưng nó vẫn có những vấn đề tiềm ẩn đối với Laravel.

Theo mặc định, Apache sẽ tạo các tệp có 644 quyền. Vì vậy, đó là khá nhiều thứ trong bộ nhớ /. Vì vậy, nếu bạn xóa nội dung của storage / framework / views, sau đó truy cập một trang thông qua Apache, bạn sẽ thấy chế độ xem được lưu trong bộ nhớ cache đã được tạo như:

-rw-r--r-- 1 www-data www-data 1005 Dec  6 09:40 969370d7664df9c5206b90cd7c2c79c2

Nếu bạn chạy "phục vụ thủ công" và truy cập một trang khác, bạn sẽ nhận được các quyền khác nhau vì CLI PHP hoạt động khác với Apache:

-rw-rw-r-- 1 user     www-data 16191 Dec  6 09:48 2a1683fac0674d6f8b0b54cbc8579f8e

Bản thân điều này không có gì to tát vì bạn sẽ không làm bất kỳ điều này trong quá trình sản xuất. Nhưng nếu Apache tạo một tệp mà sau đó người dùng cần phải ghi, nó sẽ không thành công. Và điều này có thể áp dụng cho các tệp bộ nhớ cache, các chế độ xem và nhật ký được lưu trong bộ nhớ cache khi triển khai bằng người dùng đã đăng nhập và nghệ nhân. Một ví dụ fax là "bộ nhớ cache thủ công: rõ ràng" sẽ không xóa được bất kỳ tệp bộ nhớ cache nào là www-data: www-data 644.

Điều này có thể được giảm thiểu một phần bằng cách chạy các lệnh thủ công dưới dạng www-data, vì vậy bạn sẽ thực hiện / viết kịch bản mọi thứ như:

sudo -u www-data php artisan cache:clear

Hoặc bạn sẽ tránh được sự tẻ nhạt của việc này và thêm nó vào .bash_aliases của bạn:

alias art='sudo -u www-data php artisan'

Điều này đủ tốt và không ảnh hưởng đến bảo mật theo bất kỳ cách nào. Nhưng trên các máy phát triển, việc chạy các tập lệnh kiểm tra và vệ sinh khiến việc này trở nên khó sử dụng, trừ khi bạn muốn thiết lập bí danh để sử dụng 'sudo -u www-data' để chạy phpunit và mọi thứ khác mà bạn kiểm tra các bản dựng của mình có thể khiến tệp được tạo.

Giải pháp là làm theo phần thứ hai của lời khuyên bgles và thêm phần sau vào / etc / apache2 / envvars và khởi động lại (không tải lại) Apache:

umask 002

Điều này sẽ buộc Apache tạo tệp là 664 theo mặc định. Bản thân nó, điều này có thể gây ra rủi ro bảo mật. Tuy nhiên, trên các môi trường Laravel chủ yếu được thảo luận ở đây (Homestead, Vagrant, Ubuntu), máy chủ web chạy dưới dạng dữ liệu www của người dùng trong nhóm dữ liệu www. Vì vậy, nếu bạn không tự ý cho phép người dùng tham gia nhóm dữ liệu www thì sẽ không có thêm rủi ro. Nếu ai đó cố gắng thoát ra khỏi máy chủ web, họ vẫn có cấp truy cập dữ liệu www nên không có gì bị mất (mặc dù đó không phải là thái độ tốt nhất để có liên quan đến bảo mật). Vì vậy, trên sản xuất, nó tương đối an toàn và trên máy phát triển một người dùng, nó không phải là một vấn đề.

Cuối cùng khi người dùng của bạn ở trong nhóm dữ liệu www và tất cả các thư mục chứa các tệp này là g + s (tệp luôn được tạo trong nhóm của thư mục mẹ), bất kỳ thứ gì được tạo bởi người dùng hoặc bởi www-data sẽ là r / w cho cái khác.

Và đó là mục đích ở đây.

biên tập

Khi điều tra cách tiếp cận ở trên để thiết lập quyền hơn nữa, nó vẫn đủ tốt, nhưng một vài chỉnh sửa có thể giúp:

Theo mặc định, các thư mục là 775 và các tệp là 664 và tất cả các tệp đều có chủ sở hữu và nhóm người dùng vừa cài đặt khung. Vì vậy, giả sử chúng ta bắt đầu từ điểm đó.

cd /var/www/projectroot
sudo chmod 750 ./
sudo chgrp www-data ./

Điều đầu tiên chúng tôi làm là chặn quyền truy cập của những người khác và biến nhóm thành www-data. Chỉ chủ sở hữu và các thành viên của www-data mới có thể truy cập thư mục.

sudo chmod 2775 bootstrap/cache
sudo chgrp -R www-data bootstrap/cache

Để cho phép máy chủ web tạo services.json và biên dịch.php, theo đề xuất của hướng dẫn cài đặt Laravel chính thức. Đặt bit dính nhóm có nghĩa là chúng sẽ thuộc sở hữu của người tạo với một nhóm dữ liệu www.

find storage -type d -exec sudo chmod 2775 {} \;
find storage -type f -exec sudo chmod 664 {} \;
sudo chgrp -R www-data storage

Chúng ta làm điều tương tự với thư mục lưu trữ để cho phép tạo bộ nhớ cache, nhật ký, phiên và xem các tệp. Chúng tôi sử dụng find để đặt rõ ràng các quyền thư mục khác nhau cho các thư mục và tệp. Chúng tôi không cần thực hiện việc này trong bootstrap / cache vì không có (thông thường) bất kỳ thư mục con nào trong đó.

Bạn có thể cần phải áp dụng lại bất kỳ cờ thực thi nào và xóa nhà cung cấp / * và cài đặt lại các phụ thuộc của trình tổng hợp để tạo lại các liên kết cho phpunit et al, ví dụ:

chmod +x .git/hooks/*
rm vendor/*
composer install -o

Đó là nó. Ngoại trừ umask cho Apache được giải thích ở trên, đây là tất cả những gì cần thiết mà không làm cho toàn bộ projectroot có thể ghi được bởi www-data, đây là điều xảy ra với các giải pháp khác. Vì vậy, theo cách này sẽ an toàn hơn một chút khi kẻ xâm nhập chạy dưới dạng www-data có quyền truy cập ghi hạn chế hơn.

kết thúc chỉnh sửa

Các thay đổi cho Systemd

Điều này áp dụng cho việc sử dụng php-fpm, nhưng có thể những người khác cũng vậy.

Dịch vụ systemd chuẩn cần được ghi đè, đặt umask trong tệp override.conf và dịch vụ được khởi động lại:

sudo systemctl edit php7.0-fpm.service
Use:
    [Service]
    UMask=0002
Then:
sudo systemctl daemon-reload
sudo systemctl restart php7.0-fpm.service
2
Jonathan 2017-03-11 12:30.

Tôi quyết định viết kịch bản của riêng mình để giảm bớt phần nào nỗi đau khi thiết lập các dự án.

Chạy phần sau bên trong gốc dự án của bạn:

wget -qO- https://raw.githubusercontent.com/defaye/bootstrap-laravel/master/bootstrap.sh | sh

Chờ cho quá trình khởi động hoàn tất và bạn đã sẵn sàng.

Xem lại kịch bản trước khi sử dụng.

2
Hacken Lee 2017-07-16 00:47.

Tôi đã cài đặt laravel trên phiên bản EC2 và đã dành 3 ngày để sửa lỗi quyền và cuối cùng đã sửa được. Vì vậy, tôi muốn chia sẻ kinh nghiệm này với những người khác.

  1. vấn đề người dùng Khi tôi đăng nhập vào phiên bản ec2, tên người dùng của tôi là ec2-user và nhóm người dùng là ec2-user. Và trang web hoạt động dưới quyền của người dùng httpd: apache: apache vì vậy chúng ta nên đặt quyền cho apache.

  2. quyền thư mục và tệp A. cấu trúc thư mục trước tiên, bạn nên đảm bảo rằng bạn có cấu trúc thư mục như thế này trong bộ nhớ

    lưu trữ

    • khuôn khổ
      • bộ nhớ đệm
      • phiên họp
      • lượt xem
    • nhật ký Cấu trúc thư mục có thể khác nhau tùy theo phiên bản laravel mà bạn sử dụng. phiên bản laravel của tôi là 5.2 và bạn có thể tìm thấy cấu trúc thích hợp theo phiên bản của mình.

B. quyền Lúc đầu, tôi thấy hướng dẫn đặt 777 dưới bộ nhớ để loại bỏ file_put_contents: lỗi luồng không mở được. Vì vậy, tôi thiết lập quyền 777 để lưu trữ chmod -R 777 lưu trữ Nhưng lỗi không được sửa. ở đây, bạn nên xem xét một: ai ghi tệp vào bộ nhớ / phiên và chế độ xem. Đó không phải là người dùng ec2, mà là apache. Vâng đúng. người dùng "apache" ghi tệp (tệp phiên, tệp dạng xem đã biên dịch) vào thư mục phiên và dạng xem. Vì vậy, bạn nên cấp cho apache quyền ghi vào thư mục này. Theo mặc định: SELinux nói rằng thư mục / var / www nên ở chế độ chỉ đọc bởi apache deamon.

Vì vậy, đối với điều này, chúng ta có thể đặt selinux là 0: setenforce 0

Điều này có thể giải quyết vấn đề tạm thời, nhưng điều này làm cho mysql không hoạt động. vì vậy đây không phải là giải pháp quá tốt.

Bạn có thể đặt ngữ cảnh đọc-ghi vào thư mục lưu trữ bằng: (nhớ setenforce 1 để kiểm tra)

chcon -Rt httpd_sys_content_rw_t storage/

Sau đó, vấn đề của bạn sẽ được khắc phục.

  1. và đừng quên bản cập nhật nhà soạn nhạc này php bộ nhớ cache: xóa

    Các lệnh này sẽ hữu ích sau hoặc trước đó.

    Tôi hy vọng bạn tiết kiệm thời gian của bạn. Chúc may mắn. Hacken

0
Amirreza Nasiri 2018-11-09 02:34.

Tôi đã có cấu hình sau:

  • NGINX (người dùng đang chạy nginx:)
  • PHP-FPM

Và đã áp dụng quyền một cách chính xác như @bgies đề xuất trong câu trả lời được chấp nhận. Vấn đề trong trường hợp của tôi là người dùng và nhóm đang chạy được định cấu hình của php-fpm ban đầu apache.

Nếu bạn đang sử dụng NGINX với php-fpm, bạn nên mở tệp cấu hình của php-fpm:

nano /etc/php-fpm.d/www.config

Và giá trị thay thế usergrouptùy chọn 'bằng một NGINX được định cấu hình để hoạt động; trong trường hợp của tôi, cả hai đều là nginx:

... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache Choosed to be able to access some dir as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...

Lưu nó và khởi động lại các dịch vụ nginx và php-fpm.

0
Mycodingproject 2019-12-15 12:59.

Đối với các nhà phát triển Laravel, các vấn đề về thư mục có thể là một vấn đề nhỏ. Trong ứng dụng của tôi, tôi đã tạo thư mục một cách nhanh chóng và di chuyển các tệp đến thư mục này trong môi trường cục bộ của tôi thành công. Sau đó, trên máy chủ, tôi gặp lỗi khi di chuyển tệp sang thư mục mới tạo.

Dưới đây là những điều mà tôi đã làm và có được kết quả thành công cuối cùng.

  1. sudo find /path/to/your/laravel/root/directory -type f -exec chmod 664 {} \;
    sudo find /path/to/your/laravel/root/directory -type d -exec chmod 775 {} \;
  2. chcon -Rt httpd_sys_content_rw_t /path/to/my/file/upload/directory/in/laravel/project/
  3. Trong khi tạo thư mục mới nhanh chóng, tôi đã sử dụng lệnh mkdir($save_path, 0755, true);

Sau khi thực hiện những thay đổi đó trên máy chủ sản xuất, tôi đã tạo thành công các thư mục mới và di chuyển tệp vào chúng.

Cuối cùng, nếu bạn sử dụng Mặt tiền tệp trong Laravel, bạn có thể làm như sau: File::makeDirectory($save_path, 0755, true);

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Một thương hiệu kế thừa khác có được cuộc sống mới khi những người chủ mới của Black Opal có được Hội chợ thời trang

Một thương hiệu kế thừa khác có được cuộc sống mới khi những người chủ mới của Black Opal có được Hội chợ thời trang

Desiree Rogers, trái, và Cheryl Mayberry McKissack Chuyển sang, Fenty Beauty và Pat McGrath, có một đế chế làm đẹp mới do phụ nữ làm chủ đang trỗi dậy. Sau thương vụ mua lại mỹ phẩm Black Opal vào tháng 9, đội ngũ quyền lực của Giám đốc điều hành công ty Desiree Rogers và Chủ tịch Cheryl Mayberry McKissack đã thông báo mua lại thương hiệu làm đẹp tiên phong Fashion Fair từ người sáng lập Johnson Publishing Company (JPC).

Ngoài việc trở nên vô nghĩa, các bên bộc lộ giới tính giờ đây đã trở nên chết người

Ngoài việc trở nên vô nghĩa, các bên bộc lộ giới tính giờ đây đã trở nên chết người

Đối với những người có quá nhiều thời gian, tiệc tiết lộ giới tính là một cách thú vị để không cần áp đặt những định kiến ​​hạn chế lên thai nhi trước một đối tượng bạn bè giả vờ quan tâm một cách lịch sự. Tuy nhiên, việc chỉ dựa vào những chiếc bánh nướng có màu nhân tạo để biểu thị một tiếng hoo-ha hoặc một đứa trẻ đi tè đã trở nên xa xỉ trong các bậc cha mẹ trên Instagram.

Kirstjen Nielsen đang cố gắng đổi mới bản thân với tư cách là một người phụ nữ 'nói ra sự thật cho sức mạnh'

Kirstjen Nielsen đang cố gắng đổi mới bản thân với tư cách là một người phụ nữ 'nói ra sự thật cho sức mạnh'

Hôm thứ Tư, cựu Bộ trưởng An ninh Nội địa Kirstjen Nielsen vì một lý do nào đó đã được đưa ra một diễn đàn để phát biểu tại Hội nghị thượng đỉnh Những người phụ nữ quyền lực nhất của Fortune. Và có thể đoán trước được, người phụ nữ giám sát các nỗ lực (đang diễn ra) của chính quyền Trump nhằm chia cắt các gia đình ở biên giới đã sử dụng thời gian của mình như một cơ hội để tự bảo vệ mình và tự nhận mình là người — và hãy hít thở sâu ở đây — “đã nói sự thật với quyền lực.

Toyota Racing Development sẽ cho ra mắt Supra 3000GT Concept, Massive Wing vào tháng tới

Toyota Racing Development sẽ cho ra mắt Supra 3000GT Concept, Massive Wing vào tháng tới

Vì thế hệ mới nhất của chiếc xe điều chỉnh được yêu thích trên thế giới hiện đã có mặt tại đây, nên chỉ có điều kiện là Toyota Racing Development sẽ đưa phiên bản Supra thế hệ thứ năm sửa đổi của riêng mình đến SEMA vào tháng tới. Toyota đã cho chúng tôi một gợi ý về những gì sẽ xảy ra trong tuần này: một chiếc Concept GR Supra 3000GT hiện đại.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language