Запись в каталог с использованием PHP: это проблема с разрешениями? - PullRequest
1 голос
/ 24 марта 2009

Мой PHP-скрипт записывает в файл, чтобы он мог создать изображение JPG.

fwrite($handle, $GLOBALS['HTTP_RAW_POST_DATA']);
fclose($handle);    
print $newfile.'.jpg';

Я поместил этот скрипт на новый сервер, но изображение никогда не сохраняется. Разрешение папки, в которую он сохраняет, равно 755, но ему не принадлежит. В прошлый раз, я думаю, я исправил проблему, изменив владельца каталога на apache, так как это то, что PHP работает. Я не могу сделать то же самое снова, потому что я не root.

Во-первых., Есть другое исправление? Во-вторых, если я смогу сменить владельца каталога, как в прошлый раз, это решит проблему?

Спасибо всем за помощь

Ответы [ 5 ]

8 голосов
/ 24 марта 2009
  1. изменить права доступа к папке на 777 (rwxrwxrwx)
  2. из PHP создать подкаталог с mkdir
  3. измените права доступа к каталогу обратно на 755 (rwxr-xr-x) или даже лучше 711 (rwx--x--x)
  4. отныне сохраняйте изображения в подкаталоге, который теперь принадлежит www-данным (или любому другому пользователю Apache).

КСТАТИ. Вы можете уменьшить следующий код:

fopen($newfile.'.jpg','wb');
fwrite($handle, $GLOBALS['HTTP_RAW_POST_DATA']);
fclose($handle);    
print $newfile.'.jpg';

до:

file_put_contents($newfile.'.jpg', 
                  file_get_contents('php://input', 
                                      FILE_BINARY), 
                  FILE_BINARY)
1 голос
/ 19 октября 2012

используйте это:

>chown dir_name www-data
1 голос
/ 24 марта 2009

Если вы не владелец, то да, проблема в том, что каталог 755.

Чтобы сломать это, 755 это:

  • пользователь (владелец) прочитал (4), записал (2) и выполнил (1)
  • группа прочитала (4) и выполнила (1)
  • другие читают (4) и выполняют (1)

Обратите внимание, что только владелец имеет права на запись с 755.

P.S. fopen должен вернуть ошибку, если открытие не удалось.

0 голосов
/ 24 марта 2009

Поместите error_reporting (E_ALL) вверху вашего скрипта и проверьте, выводит ли он какие-либо предупреждения при попытке сохранить изображение.

0 голосов
/ 24 марта 2009

У меня была похожая проблема пару недель назад. В итоге это был безопасный режим PHP, установленный на сервере.

Проверьте это!

...