Чтобы создать файл в корне документа, ваш PHP-процесс должен иметь разрешения на запись в каталог. Обычно (но не всегда) PHP работает от имени того же пользователя, что и веб-сервер. Имя этого пользователя будет отличаться в зависимости от системы. В Ubuntu и Debian пользователь называется www-data
, в других системах это может быть просто www
, или apache
, или apache2
. В некоторых системах это может быть root
.
Вы можете узнать, каким пользователем работает ваш PHP, изучив значение суперглобального сервера: $_SERVER['USER']
. phpinfo()
позволяет легко смотреть на подобные вещи. Обычно пользователь PHP такой же, как пользователь веб-сервера (но не всегда).
Настройка владения каталогом и разрешений - это еще одна тема, которая зависит от того, на какой операционной системе вы работаете, какие у вас есть права доступа и разрешения для сервера, и от множества других вещей. Если вам нужны указатели на это, вы можете начать с serverfault.com .
удачи.
[править] Хорошо, если вы работаете как apache
, и вы пытаетесь создать новый каталог в /var/www/blah/mydomain.com/htdocs/
... тогда при запуске:
> ls -splad /var/www/blah/mydomain.com/htdocs
вы ожидаете увидеть что-то вроде:
4 drwxr-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
Есть две интересные части:
drwxr-xr-x
означает: d
= каталог; rwx
= у пользователя есть Чтение, Запись, eXecute; r-x
= группа имеет только чтение и eXecute; r-x
= у всех есть только Read и eXecute.
и apache apache
- первое имя пользователя, которому принадлежит файл / каталог, второе имя группы, которой принадлежит файл / каталог.
так что если вы видели что-то вроде этого:
4 drwxr-xr-x 2 root apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
будет не работать, потому что каталог принадлежит root
(не apache), и хотя он сгруппирован по apache
, каталог не доступен для записи в группе, поэтому порежь это. В этом сценарии вы можете просто добавить разрешения на групповую запись (chmod g+w /var/www/blah/mydomain.com/htdocs
), и все готово.
Что-то еще, что вы можете увидеть:
4 drw-r-xr-x 2 apache apache 4096 2010-07-22 20:54 /var/www/blah/mydomain.com/htdocs/
В этом случае владелец в порядке, но каталог не доступен для записи его владельцем. Вы можете исправить это, добавив разрешение на запись для владельца chmod u+w /var/www/blah/mydomain.com/htdocs
.
Есть много других вариантов, но, возможно, это поможет.