Чтобы создать файл в корневом каталоге документа, ваш PHP-процесс должен иметь права на запись в каталог. Обычно (но не всегда) PHP работает от имени того же пользователя, от имени которого работает веб-сервер. Имя этого пользователя будет различаться в разных системах. В Ubuntu и Debian пользователь называется www-data
, в других системах это может быть просто www
, или apache
, или apache2
. В некоторых системах это может быть root
.
Вы можете узнать, под каким пользователем работает ваш PHP, изучив значение сервера superglobal: $_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
= у пользователя есть чтение, запись, выполнение; r-x
= группа имеет только чтение и выполнение; r-x
= у всех есть только чтение и выполнение.
и 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
.
есть много других вариантов, но, возможно, это поможет.
person
Lee
schedule
31.10.2010
mkdir
. Если вы подтвердили, что используете правильный путь, то у вас определенно есть проблема с разрешениями — вам нужно предоставить необходимые разрешения для корневого каталога документа, чтобы ваш php-процесс мог писать в него. Если у вас нет прав администратора на вашем сервере, это может быть задачей для системного администратора. - person Lee   schedule 31.10.2010$dir_to_make
и$file_to_make
содержат строки, которые, как вы думаете, они содержат. распечатайте их так, чтобы не было путаницы:echo "[{$dir_to_make}]"
- person Lee   schedule 31.10.2010