mkdir не работает в PHP

Я рвал на себе волосы последние 2 часа и уверен, что делаю что-то действительно глупое.

<?php
mkdir("blah", 0777);
?>

Это работает через командную строку, и папка создается. Но то же самое не работает, когда я пытаюсь запустить его через браузер. Какие-то проблемы с правами доступа к файлам?


person Abhinav    schedule 07.02.2010    source источник
comment
я застрял с этим в течение длительного времени, hth кто-то еще. если вы используете SELinux, есть дополнительный уровень разрешений, называемый контекстом безопасности, который вы можете увидеть с помощью ls -alZ. используйте что-то вроде chcon system_u:object_r:httpd_sys_content_t:s0 public_HTML   -  person changokun    schedule 12.03.2013


Ответы (3)


Возможно ли, что при запуске из командной строки скрипт наследует ваши права, а при запуске из браузера — нет?

В этом случае вы хотели бы, чтобы права доступа к каталогу «записывали» для группы.

person Tyler Carter    schedule 07.02.2010
comment
Ха-ха! 10000 репутации! Ура! - person Tyler Carter; 07.02.2010

Ваш веб-сервер (apache?) работает как собственный пользователь и не имеет разрешения на запись в каталог, в котором вы запускаете mkdir.

Дайте пользователю вашего веб-сервера разрешение на запись в каталог, либо A) сделав его владельцем, B) добавив его в группу, если у группы есть разрешение на запись, либо C) предоставив всем разрешение на запись (не рекомендуется для большинства настроек).

person Dolph    schedule 07.02.2010
comment
Была такая же проблема, решил! Сначала я создал папку с FTP, при использовании mkdir для создания папок внутри это не сработало. Удаление папки и проверка того, что сценарий создает ее, решает эту проблему. - person Pedro; 21.11.2014

вы можете попробовать с umask. Когда PHP используется в качестве серверного модуля, umask восстанавливается после завершения каждого запроса.

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
person Faruk Omar    schedule 15.01.2015