Giải pháp 3 bước đơn giản
Tóm tắt: Bạn cần đặt chủ sở hữu của thư mục cho người dùng mà PHP sử dụng [người dùng máy chủ web].
Bước 1: Xác định người dùng PHP
Tạo một tệp PHP chứa như sau:
Tải nó lên máy chủ web của bạn. Đầu ra phải tương tự như sau:
www-data
Do đó, người dùng PHP là
www-data
4.Bước 2: Xác định chủ sở hữu thư mục
Tiếp theo, kiểm tra chi tiết của thư mục web thông qua dòng lệnh:
ls -dl /var/www/example.com/public_html/example-folder
Kết quả phải tương tự như sau:
drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
Do đó, chủ sở hữu của thư mục là
www-data
5.Bước 3: Thay đổi chủ sở hữu thư mục thành người dùng PHP
Sau đó, thay đổi chủ sở hữu của thư mục web thành người dùng PHP:
sudo chown -R www-data /var/www/example.com/public_html/example-folder
Xác minh rằng chủ sở hữu của thư mục web đã được thay đổi:
ls -dl /var/www/example.com/public_html/example-folder
Kết quả phải tương tự như sau:
drwxrwxr-x 2 www-data exampleuser2 4096 Mar 29 16:34 example-folder
Do đó, chủ sở hữu của thư mục là
www-data
5.Bước 3: Thay đổi chủ sở hữu thư mục thành người dùng PHP
Tôi sẽ hoàn thành câu trả lời của Rahmu và MV với một giải pháp kỹ thuật. Tất cả mọi thứ sau đó chỉ có giá trị cho các hệ thống giống như Unix.
Cuộn qua phần Chmod/Chown cho một ví dụ sử dụng ACLS - một công cụ mạnh hơn so với các chế độ tệp Unix.
Tìm tên người dùng máy chủ web của bạn
Đầu tiên, bạn sẽ cần biết tên người dùng mà máy chủ web của bạn chạy. Nếu bạn đang sử dụng Apache, nó có thể là
www-data
8 hoặc www-data
9, www-data
4, v.v. trên hầu hết các hệ thống giống như Debian, Apache là www-data
4. Đối với Nginx, nói chung, nó cũng là www-data
4.Để kiểm tra nó, hãy thử:
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
Đảm bảo rằng tên người dùng này trả về lệnh này là kết hợp [ví dụ: tôi sử dụng nginx 99% thời gian, nhưng lệnh này trả về
ls -dl /var/www/example.com/public_html/example-folder
3, một máy chủ web Java tôi đã cài đặt một lần].Cấp quyền cho máy chủ web: Sử dụng ls -dl /var/www/example.com/public_html/example-folder
4 và ls -dl /var/www/example.com/public_html/example-folder
5
ls -dl /var/www/example.com/public_html/example-folder
ls -dl /var/www/example.com/public_html/example-folder
Thực hiện
ls -dl /var/www/example.com/public_html/example-folder
4 của 666 hoặc 777 [giải pháp đi đến cho loại vấn đề đó trong các tài liệu/hướng dẫn xấu] có thể làm cho mọi thứ hoạt động một cách kỳ diệu, nhưng không an toàn. Cung cấp 666 hoặc 777 quyền sẽ cho phép truy cập vào "những người khác". Vì vậy, không chỉ Apache, mà cả ls -dl /var/www/example.com/public_html/example-folder
7 và ls -dl /var/www/example.com/public_html/example-folder
8 [với điều kiện là các tài khoản người dùng đó tồn tại trên máy của bạn - nhưng không thực sự, xin vui lòng tránh làm điều này trừ khi nó chỉ để kiểm tra/khắc phục sự cố].Tốt hơn là nên cụ thể hơn và cấp quyền cho bạn và Apache. Thay đổi nhóm các tệp của bạn để cung cấp toàn bộ điều khiển trên các tệp của bạn sang máy chủ web. Để làm điều này, thay đổi chủ sở hữu đệ quy:
________số 8Nhưng rất có thể, bạn có thể muốn giữ quyền truy cập đầy đủ trên các tệp của mình bằng cách chỉ thay đổi nhóm:
chown -R yourusername:www-data your/folder/
Sau đó, thực hiện
ls -dl /var/www/example.com/public_html/example-folder
4 thích hợp để cung cấp cho nhóm www-data
4 các quyền giống như bạn. Ví dụ: nếu chế độ hiện tại là 640 [6 đối với bạn, 4 đối với www-data, 0 đối với những người khác, dịch sang -rw-r -----], đặt nó thành 660 [6 cho bạn, 6 cho www- Dữ liệu, 0 cho những người khác, dịch sang -RW-RW ----]. Xem câu trả lời của Rahmu để tìm hiểu thêm về các chế độ tệp, đó là một cơ chế cũ, tuy nhiên thanh lịch.Để tránh thao túng các số Arcane với
ls -dl /var/www/example.com/public_html/example-folder
4, bạn cũng có thể sử dụng cú pháp này:www-data
0Nó có nghĩa là "đối với nhóm [
drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
2], thêm [drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
3] đọc và ghi [drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
4] các quyền trên thư mục drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
5, đệ quy [drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
6]".Trong 90% trường hợp, điều này là đủ.
Phương pháp ưa thích của tôi: Sử dụng ACLS [Danh sách kiểm soát truy cập]
Đôi khi giải pháp đầu tiên là không đủ. Tôi sẽ lấy ví dụ về Khung Symfony đăng nhập và lưu trữ rất nhiều dữ liệu. Vì vậy, nó cần viết quyền truy cập vào thư mục thích hợp.
Và phương thức ________ 24/________ 25 có thể không đủ, khi bạn đang sử dụng song song với bảng điều khiển Symfony trong CLI [trong tài khoản người dùng của tôi] và người dùng web [người dùng máy chủ web]. Điều này gây ra rất nhiều vấn đề vì Symfony liên tục sửa đổi quyền.
Trong trường hợp này, chúng tôi sẽ sử dụng ACL [Danh sách kiểm soát truy cập], đây là một cách tiên tiến hơn để quản lý quyền trên nhiều hệ thống Unix.
Ở đây các lệnh được đưa ra bởi tài liệu Symfony chính thức [vui lòng thay đổi
drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
9 và sudo chown -R www-data /var/www/example.com/public_html/example-folder
0 theo nhu cầu của bạn]:please change drwxrwxr-x 2 exampleuser1 exampleuser2 4096 Mar 29 16:34 example-folder
9 and sudo chown -R www-data /var/www/example.com/public_html/example-folder
0 to your needs]:Trên một hệ thống hỗ trợ sudo chown -R www-data /var/www/example.com/public_html/example-folder
1 [nghĩa là không phải Debian/Ubuntu]
sudo chown -R www-data /var/www/example.com/public_html/example-folder
www-data
1Trên một hệ thống không hỗ trợ sudo chown -R www-data /var/www/example.com/public_html/example-folder
1 [phổ biến nhất]
sudo chown -R www-data /var/www/example.com/public_html/example-folder
Bạn sẽ cần công cụ
sudo chown -R www-data /var/www/example.com/public_html/example-folder
3; Có thể nó được cài đặt trên hệ thống của bạn theo mặc định, vì vậy hãy thử sudo chown -R www-data /var/www/example.com/public_html/example-folder
4 để xem lệnh có khả dụng không.Nếu lệnh không khả dụng và bạn đang sử dụng Ubuntu 14.04+, bạn sẽ phải cài đặt công cụ:
www-data
2Nếu không, hãy làm theo tài liệu HĐH của bạn, vì bạn có thể cần thay đổi cách thức phân vùng của bạn được gắn [tài liệu Ubuntu tại đây].
Và chúng tôi ở đó:
www-data
3Tôi chưa bao giờ có bất kỳ vấn đề nào với phương pháp này, hài lòng hoặc tiền của bạn trở lại.