Вопрос
Мой код
mkdir("/some/absolute/path",0777);
и
mkdir("relative/path", 0777);
Не работает, безопасный режим выключен, и я даже попробовал установить все родительские папки до 777.
Любые идеи?
Редактировать: У меня есть сообщение об ошибках включена, в моем разочаровании у меня 777, весь путь, чтобы убедиться, что это не проблема. Это должен быть что-то тупо просто продолжаться.
Редактировать редактирование: УПЗО для всех, кто ответил на предложения ... Но я не собираюсь выбрать ответ, так как это все еще не решено, но затем я думаю, что это будет один из тех, кто оставил открытым навсегда.
Отредактируйте х 3: Итак, у меня есть самое неудовлетворительное разрешение на этот вопрос когда-либо ... Я начал с чистого образа VM, повторю его, и это работает сейчас. Без шуток.
Решение
Вы пропускаете цитаты вокруг параметра имени пути.
Другие советы
Существуют ли все родительские каталоги?
Если нет, вам нужно включить рекурсию (при условии PHP5 здесь):
mkdir('/path/to/your/dir',0777,true);
Редактировать: не видел скрытый комментарий, говоря, что каждый каталог из var
Даун был установлен на World-Rearable, поэтому я делаю ставку на путь каталога существует, и вышесказанное не будет полезно. Извини!
Вы пытаетесь создать эти каталоги рекурсивно, как вы сделаете с mkdir -p
На командной строке? Если это так, укажите true
как третий параметр для mkdir
.
И просто для Echo предыдущие предложения, пожалуйста, укажите сообщения об ошибках, которые вы получаете. Если вы не получаете, используйте это до вашего звонка: error_reporting(-1); // ALL messages
и ini_set('display_errors', 'On');
.
Вы пытались с максимально кратчайшим тестом?
MKDIR («Справочник», 0777);
Если это не работает, я бы попробовал создать со стандартным CHMOD, как 0755 (это совершенно случайное угадание, возможно, сервер не позволит создавать 0777 через PHP)
Если это не сработает, я бы сказал, что сервер, вероятно, нуждается в разных настройках / PHP Thave The The White Thave Prange на папку, может быть, вы можете попросить вашего хоста поставщика?
У меня есть подобная проблема, и я узнал, что у меня нет свободное место оставил на моем приводе. Проверьте с командой df
(на Linux) насколько полный диск. Возможно, что корню разрешено создавать файлы и папки в этой ситуации, потому что он имеет предварительно зарезервированное пространство. Если вы запустите ваш скрипт из командной строки, как root
Пользователь - нет ошибок, но если ваш сценарий работает apache
, Затем возникает ошибка.
Если кто-то застрял с этой проблемой .. Есть один ответ, который я могу дать вам, что я провожу 2 часа на поиске .. Я пытался с помощью полного пути, а также "../mydirectoryname".
Попробуйте использовать:
mkdir("./mydirectoryname", 0777, true);
Вместо..
mkdir("../mydirectoryname", 0777, true);
Для будущих ссылок проблема может прийти от возможности, что каталог, в котором вы пытаетесь создать свой новый каталог, не имеет достаточного разрешения.
Например, ваш каталог индекса может выглядеть так:index.php new_dirs_here
если new_dirs_here
Нет достаточно разрешений, то вы не можете создавать дирижеры внутри.
Чтобы решить это, я бы использовал команду:chmod 777 new_dirs_here
Теперь я не беспокоюсь о безопасности, просто пытаюсь решить немедленную проблему. Вы, конечно, могли бы найти лучшие настройки разрешений, но идея в том, что ваша new_dirs_here
должно быть достаточно разрешений.
Тогда, ваш mkdir()
На диск должен работать просто хорошо.
Удачи
Вы должны принять атрибут в кавычках:
mkdir('path/to/your/dir','0777');