Để tạo một tập tin trong thư mục gốc tài liệu, quy trình PHP của bạn phải có quyền ghi vào thư mục. Thông thường (nhưng không phải lúc nào) PHP chạy như cùng một người dùng mà máy chủ web chạy như. Tên của người dùng này sẽ khác nhau với các hệ thống khác nhau. Trên Ubuntu và Debian, người dùng được gọi là www-data
, trên các hệ thống khác có thể chỉ là www
hoặc apache
hoặc apache2
. Trên một số hệ thống, có thể là root
.
Bạn có thể tìm hiểu xem người dùng của bạn chạy PHP bằng cách kiểm tra giá trị của máy chủ superglobal: $_SERVER['USER']
. phpinfo()
cung cấp một cách dễ dàng để xem các nội dung như thế này. Thông thường, người dùng PHP giống với người dùng máy chủ web (nhưng không phải lúc nào).
quyền sở hữu và quyền của thư mục cài đặt là một chủ đề khác hoàn toàn - phụ thuộc vào hệ điều hành bạn đang truy cập, quyền truy cập và quyền bạn có đối với máy chủ và nhiều nội dung khác. Nếu bạn cần các gợi ý về điều này, bạn có thể start at serverfault.com.
chúc may mắn.
[sửa] OK, nếu bạn đang runing như apache
, và bạn đang cố gắng để tạo thư mục mới trong /var/www/blah/mydomain.com/htdocs/
... sau đó khi bạn chạy:
> ls -splad /var/www/blah/mydomain.com/htdocs
bạn muốn mong đợi để xem một cái gì đó như:
4 drwxr-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
có hai phần thú vị:
drwxr-xr-x
có nghĩa là: d
= thư mục; rwx
= người dùng đã đọc, viết, eXecute; r-x
= nhóm chỉ đọc và eXecute; r-x
= mọi người chỉ đọc và eXecute.
và apache apache
- tên đầu tiên là tên của người dùng sở hữu tệp/thư mục, tên thứ hai là tên của nhóm sở hữu tệp/thư mục.
vì vậy nếu bạn thấy một cái gì đó như thế này:
4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
nó sẽ không làm việc vì mục được sở hữu bởi root
(không apache), và mặc dù nó được phân nhóm theo apache
, thư mục không phải là nhóm có thể ghi để không cắt nó. Trong trường hợp này, bạn có thể chỉ cần thêm nhóm viết perms (chmod g+w /var/www/blah/mydomain.com/htdocs
), và bạn tốt để đi.
Cái gì khác bạn có thể thấy là:
4 drw-r-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
Trong trường hợp này, quyền sở hữu là ok, nhưng thư mục không ghi được bởi chủ nhân của nó. Bạn có thể sửa lỗi này bằng cách thêm quyền ghi cho chủ sở hữu chmod u+w /var/www/blah/mydomain.com/htdocs
.
có rất nhiều biến thể khác, nhưng có thể điều này sẽ hữu ích.
thông báo lỗi mà php đang tạo là gì? nếu nó không in ra dòng html, thì nó sẽ nằm trong nhật ký máy chủ. – Lee
PHP Cảnh báo: mkdir() [function.mkdir]: Quyền bị từ chối trong /var/www/blah/websitename.com/httpdocs/aaa.php trên dòng 13 – matthewpavkov
Tôi cũng nên thêm điều đó trên máy chủ này, trong cùng một tài khoản, tôi có cài đặt đầy đủ Wordpress, đang chạy tốt (tải lên tệp, cập nhật plugin, v.v.). – matthewpavkov