mkdir не работает php
Не могу создать папку mkdir
Здравствуйте.
Не получается создать папку в CodeIgniter
Мучаюсь уже второй раз. В первый раз, каким-то образом смог достить результата, но ничего не сохранил, думал, что смогу вспомнить.
Делаю все по мануалу, за исключением, что добавляю проверку на существование папки, если ее нет, то надо ее создать. Не работает именно участок когда mkdir($config[‘upload_path’]);
Выдает ошикбку
————————-
A PHP Error was encountered
Message: mkdir(): No such file or directory
Line Number: 21
——————————-
Прошу помощи у опытных коллег
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Ошибка Warning: mkdir() [function.mkdir]: File exists
Подскажите в чем ошибка? Выводит ошибку Warning: mkdir() : File exists if.
Не могу создать папку на PHP
Добрый вечер. Не могу создать папку на локальном сервере под Linux. При регистрации пользователя.
Через cron команда mkdir создает папку со старой датой
Столкнулся с проблемой, через cron в скрипте команда mkdir создает директорию со старой датой и.
Ну видимо нет не только папки songs, но и папки с именем юзера
Нет, я имел ввиду мануал по codeigniter.
Директория uploads существует, если я пишу mkdir(‘./uploads/leemalmac/songs’) то все прекрасно рабоет, и загрузка осуществляетя.
Стоит заменить эту строку на значения массива, выдает ошибку. Вот в этом я и не могу разобраться, почему оно так.
Прекрасно понимаю, это от моей неграмотности, не сам не смог по гуглу разобраться.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Не могу закрепить программы в панели задач, корзина сразу удаляет файлы, не могу создать папку
Небольшая кучка проблем с интерфейсом, если поможете буду признателен! 1. Не могу закрепить.
Создать новую папку не могу
Добрый вечер, проблема, не могу создать новую папку или же новый документ, путем правой кнопкой.
Не могу создать общую папку в VirtualBox
Почему при выборе общей папки в настройках виртуальной машины выскакивает такая ошибка?
Не могу создать общую сетевую папку
не могу создать общую сетевую папку локальные компы не видят сервер. что делать? Добавлено через.
представить — PHP mkdir больше не работает
Решение
Хотя я не могу точно сказать, почему mkdir не работает в этом сценарии, вам нужно внести несколько изменений в том, как вы развиваетесь.
Во-первых, используйте абсолютные URL. Это добавляет немного накладных расходов в вашей первоначальной разработке, но это, несомненно, того стоит. Например:
Если у вас есть каталог для загрузки в том же каталоге, что и ваш скрипт, вы можете сделать что-то вроде этого define(‘UPLOADS_DIR’, realpath(‘uploads’));
И продолжайте эту тенденцию, пока все ваши каталоги не будут правильно отображены.
Затем добавьте это в начало вашего скрипта:
Зачем это делать?
Потому что вы получите false ответ на попытку установить реальный путь, если этот путь не может быть найден. Это означает, что вы будете выдавать ошибку при попытке создать каталог, вместо того, чтобы фактически создавать каталог где-то еще. При правильной процедуре (например, убедитесь, что эти константы не FALSE ), ты узнаешь до пытаясь на самом деле сделать каталог. Это, и вы будете знать Несомненно, что ваши пути верны. Это бесценная информация для любого разработчика!
Привыкайте развиваться с помощью констант / переменных, которые отображаются на реальных путях. Последнее, что вам нужно, это либо опечатки, либо другие человеческие ошибки, вызывающие ошибки в ваших скриптах. Вы установили путь один раз и вам больше никогда не придется беспокоиться об ошибках. Повторно используйте константу снова и снова, и будьте уверены, что ваш путь правильный.
Отчет об ошибках поможет вам отладить все проблемы, с которыми вы сталкиваетесь. Ваша цель, когда что-то не работает, — выяснить, в чем причина. В программировании нет ничего, что просто «не работает», скорее, вещи просто не работают еще. Это зависит от вас, чтобы разобраться с ошибкой (-ами) и найти решение (-я).
Теперь — что касается вашей проблемы
Вот если бы я хотел сделать действительно быстрое решение. В качестве альтернативы, я бы перебрал каждый каталог и убедился, что каждый каталог во всем пути существует, если я использую случайные пути, но это только я. Вышеуказанное может работать просто отлично для ваших нужд.
Вам нужна некоторая отладка — похоже, вы не используете остановки в хорошей IDE. Если это так, просто добавьте некоторую отладочную информацию, чтобы позже ее можно было отменить / комментировать:
Фигурные скобки не нужны внутри эха, как вы, наверное, уже знаете, однако, я в привычке.
Запустите код. Что просходит? Если говорится, что оба пути существуют, а вы их не видите, в ваших путях / коде есть ошибки. Попробуйте что-то вроде этого, чтобы убедиться, что вы действительно создаете каталоги, в которых, как вы думаете, вы находитесь:
И поэтому, именно поэтому вы создаете константы на основе реального пути. Это устраняет необходимость в приведенном выше коде и полностью расслабляет ваш разум при попытке отладить такие вещи, как mkdir не работает, как ожидалось.
Ваша цель с отладкой этого mkdir вопрос очень понятен
Я могу с уверенностью заверить вас, что нет проблем с mkdir как функция PHP. Что-то предотвращение это от работы — это не сломано. Вы должны быть в этом менталитете, чтобы действительно отладить его.
Это все, что я могу думать об этом, и я не могу понять ваш второй вопрос. Еще раз уточните ваш вопрос, и я постараюсь ответить на второй вопрос.
mkdir
(PHP 4, PHP 5, PHP 7, PHP 8)
mkdir — Создаёт директорию
Описание
Список параметров
Аргумент permissions игнорируется в Windows.
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Ошибки
Примеры
Пример #1 Пример использования функции mkdir()
Пример #2 Использование mkdir() с параметром recursive
// Желаемая структура папок
$structure = ‘./depth1/depth2/depth3/’ ;
Смотрите также
User Contributed Notes 40 notes
When using the recursive parameter bear in mind that if you’re using chmod() after mkdir() to set the mode without it being modified by the value of uchar() you need to call chmod() on all created directories. ie:
May result in «/test1/test2» having a mode of 0777 but «/test1» still having a mode of 0755 from the mkdir() call. You’d need to do:
Please note that in a shared environment I failed to take into account an existing umask when I did a mkdir(dirname, 0755). This ended up creating the directory (function returned true), but I didn’t have rights to do anything inside the folder, nor could I even view that it existed via ftp.
However, file_exists(dirname) returned true. Eventually I figured out what happened and was able to rmdir(dirname), then created the directory correctly.
So, when writing scripts you expect to be portable, either use umask to set your umask accordingly, or do a straight mkdir(dirname) followed by chmod(dirname, 0755) (or whatever it is you’re looking for). If you make the same mistake I did, you should be able to rmdir() or chmod() the folder so it’s accessible.
One small correction on a note from Frank in June 2006 on recursive directories under Windows.
Franks note stated:
This will work a bit better 🙂
функция mkdir() не работает
не работает, безопасный режим выключен, и я даже попытался установить все родительские папки на 777.
EDIT: у меня есть отчеты об ошибках, в моем расстройстве я 777’d весь путь, чтобы убедиться, что это не проблема. Должно быть, происходит что-то глупо простое.
EDIT EDIT: Upvotes для всех, кто ответил с предложениями. Но Я не собираюсь выбирать ответ, так как это все еще не решено, но опять же я думаю, что это будет один из тех, которые остаются открытыми навсегда.
EDIT x 3: поэтому у меня самое неудовлетворительное разрешение этого вопроса. Я начал с чистого образа VM, повторил его, и теперь он работает. Без шуток.
7 ответов
У вас отсутствуют кавычки вокруг параметра path name.
существуют ли все родительские каталоги?
Если нет, вам нужно включить рекурсию (предполагая, что PHP5 здесь):
EDIT: не видел скрытого комментария, говорящего, что каждый каталог из var downward был установлен в world-writable, поэтому я держу пари, что путь к каталогу существует, и выше не будет полезен. Прости!
вы пробовали с кратчайшим возможным тестом?
mkdir (‘directory’, 0777);
Если это не работает, я бы попытался создать со стандартным CHMOD, как 0755 (это совершенно случайное предположение, возможно, сервер не позволит создать 0777 через PHP)
Если это не работает, я бы сказал, что сервер, вероятно, нуждается в другой настройке / php не имеет записи прямо в папке, может быть, вы могли бы спросить своего хост-провайдера?
Если кто-то застрянет с этой проблемой.. есть один ответ, который я могу дать вам, что я трачу 2 часа на поиск.. Я попытался использовать полный путь, и»../ mydirectoryname».
PHP mkdir: проблема с отказом в разрешении
Я знаю, что это старая ветка, но для нее нужен лучший ответ. Вам не нужно устанавливать разрешения на 777, это проблема безопасности, поскольку это дает доступ для чтения и записи всему миру. Возможно, ваш пользователь apache не имеет разрешений на чтение / запись в каталоге.
Вот что вы делаете в Ubuntu
Убедитесь, что все файлы принадлежат группе и пользователю Apache. В Ubuntu это группа www-data и пользователь
Затем разрешил всем членам группы www-data читать и писать файлы.
Теперь mkdir() функция php должна работать без возврата ошибок
Поздний ответ для людей, которые найдут это через Google в будущем. Я столкнулся с той же проблемой.
ПРИМЕЧАНИЕ: Я НА MAC OSX LION
Что происходит, так это то, что apache запускается от имени пользователя «_www» и не имеет прав на редактирование каких-либо файлов. Вы заметите, что НИКАКИЕ функции файловой системы не работают через php.
Откройте окно поиска и в строке меню выберите «Перейти»> «Перейти к папке»> / private / etc / apache2.
теперь откройте httpd.conf
изменить имя пользователя:
Теперь перезапустите apache, запустив этот терминал формы:
Если это все еще не работает, я сделал следующее, прежде чем я сделал это. Может быть связано.
Откройте терминал и выполните следующие команды: (обратите внимание, мои файлы веб-сервера находятся в / Library / WebServer / www. Изменяйте в соответствии с местоположением вашего веб-сайта)
Не устанавливайте разрешения на 777 при использовании mkdir в PHP
Ответы только по ссылкам не считаются хорошей практикой в StackOverflow, но рекомендации, приведенные здесь, как правило, НЕ следует выполнять.
Пожалуйста, перестаньте предлагать использовать 777. Вы делаете свой файл доступным для записи всем, что в значительной степени означает, что вы теряете всю безопасность, для которой была разработана система разрешений. Если вы предлагаете это, подумайте о последствиях, которые это может иметь на плохо настроенном веб-сервере: станет невероятно легко «взломать» веб-сайт, перезаписав файлы. Так что не надо.
Я знаю, что эта ветка старая, но, возможно, однажды это поможет кому-то.
Для создания каталога у вас должны быть разрешения файловой системы.
Пример: в Ubuntu 10.04 apache (php) работает как пользователь: www-data в группе: www-data
Это означает, что пользователю www-data необходим доступ для создания каталога.
Вы можете попробовать это сами, используя: ‘su www-data’, чтобы стать пользователем www-data.
В качестве быстрого исправления вы можете сделать: sudo chmod 777 my_parent_dir