Кажется, я не могу создавать файлы. Когда я устанавливаю разрешения для 777 В папке, где я пытаюсь создать папку, скрипт работает нормально. Если папка установлена на 755, она терпит неудачу. Я не очень разбираюсь в Linux, но я полагаю, что это нужно. Я потратил пару часов на то, чтобы попробовать. Кто-нибудь знает, как сделать так, чтобы apache имел достаточно высокие разрешения.
Я знаю, что это проблема с разрешениями и apache, я просто не знаю, как это исправить. Я отредактировал файл httpd.conf, но я действительно не знаю, что делаю … Любая помощь? (Я сохранил резервную копию.)
Пожалуйста, прекратите предлагать использовать 777. Вы делаете файл доступным для записи всем, что в значительной степени означает, что вы потеряете всю безопасность, для которой была создана система разрешений. Если вы предложите это, подумайте о последствиях, которые могут иметь последствия для плохо настроенного веб-сервера: стало бы невероятно легко «взломать» веб-сайт, перезаписав файлы. Итак, не надо.
Майкл: существует вполне обоснованная причина, почему ваш сценарий не может создать каталог, пользователь, на котором работает PHP (который может отличаться от Apache), просто не имеет достаточных прав для этого. Вместо того, чтобы изменять разрешения, я думаю, вы должны решить основную проблему, то есть ваши файлы имеют неправильный владелец, или Apache или PHP работают под неправильным пользователем.
Теперь, похоже, у вас установлен ваш собственный сервер. Вы можете определить, какой пользователь запускает PHP, запустив простой скрипт, который вызывает программу «whoami», установленную в большинстве linux:
<?php echo `whoami`;
Если все правильно, вы должны увидеть, что имя пользователя PHP работает под. В зависимости от вашей ОС это могут быть «www-data», «nobody», «http» или любые варианты. Если ваш веб-сайт является единственным веб-сайтом, это легко изменить, изменив пользовательский Apache. Если у вас есть Debian, как я привык, вы можете отредактировать файл / etc / apache2 / envvars (с правами root) и изменить значение для APACHE_RUN_USER. В зависимости от вашей ОС эта переменная может быть настроена в другом файле конфигурации, поэтому, если вы не можете найти ее в / etc / apache2 / envvars, попробуйте найти объявление переменной, используя:
$ grep -R "APACHE_RUN_USER=" .
Из каталога находятся все файлы apache-config.
Если вы не единственный на сервере, вы можете захотеть создать учетные записи пользователей для каждого веб-сайта и использовать что-то вроде Apache2-MPM-ITK для изменения RUN_USER в зависимости от того, на каком веб-сайте вызывается. Кроме того, убедитесь, что пользователь, с которым работает PHP-процесс, является владельцем файлов и каталогов. Вы можете сделать это, используя chown:
% chown theuser:theuser -R /var/www/website/
Если PHP работает со своим собственным пользователем и является владельцем файлов и каталогов, в которые ему нужно писать, разрешения 700 будет достаточно. Я обычно использую 750 для большинства файлов, хотя, как правило, у меня есть несколько пользователей в этой группе, и у них могут быть разрешения на чтение. Таким образом, вы можете изменить разрешения:
% chmod 0750 -R /var/www/website/
Это должно быть так. Если у вас возникли проблемы, сообщите нам об этом, и, пожалуйста, никогда не прибегайте к советам, которые по существу говорят вам: если безопасность вас беспокоит, удалите ее.
У меня есть аналогичная проблема, но в моем случае у меня работает SELinux, и она не удалась даже с разрешением 0777. Оказывается, мне нужно явно разрешить httpd иметь доступ на запись в каталоге, используя:
chcon -R -t httpd_sys_rw_content_t <PARENT_OF_MKDIR_TARGET>
У устройства устранения неполадок SELinux может быть больше информации.
На ubuntu вы редактируете / etc / apache2 / envvars, как предположил Берри.
Когда вы меняете пользователя Apache, остерегайтесь непреднамеренных последствий. Один из них – это сеансы PHP, которые могут храниться в / var / lib / php5. Возможно, вам придется изменить право собственности на эту папку.
Пользователь php (www-data, php, apache, независимо от того, что это может быть) должен иметь права на запись в директорию 755. Я предполагаю, что он не является членом группы создателя папки, иначе он сможет написать ему. Либо добавьте пользователя php в группу, либо измените права доступа к папке на 777. Если ни один из них не является параметром, вы можете использовать расширение PECL SSH2 для входа в систему с пользователем, находящимся в группе (или владельцем файла ) и создайте файлы вместо этого.