Назад | Перейти на главную страницу

Директива PHP FCGI и upload_tmp_dir работает некорректно

я бегу PHP так как FCGI! Я устанавливаю upload_tmp_dir вариант как стоимость /home/domain.com/tmp. При исполнении phpinfo() для повторной проверки подтверждается правильность указанных выше настроек.

Тем не менее, когда происходит фактическая загрузка, загружаемый файл временно собирается в /tmp каталог с разрешениями apache:apache и когда загрузка будет полностью завершена только затем загруженный файл перемещается в целевой каталог, который был установлен в upload_tmp_dir. После перемещения файла он правильный разрешения, которые domainowner:domainowner.

Что происходит с FCGI как описано выше, абсолютно неверно и отличается от того, что mod_php или CGI делаем! mod_php и CGI просто начни загружать файл прямо к upload_tmp_dir а потом просто переименовать файл после завершения загрузки.

У меня есть несколько серьезных опасений по этому поводу:

Представьте, что произойдет, если 20 человек одновременно закончат загрузку файла размером около 2 ГБ? Загруженные файлы нужно будет переместить в домашний каталог из /tmp, создавая бесполезную нагрузку на файловую систему! Таким образом, я подумал, что перемещение гораздо более изобретательно, чем просто переименование файла в том же каталоге ?! Кроме /tmp установлен как ext3 и домой как ext4 и что еще хуже /tmp раздел составляет 16 ГБ пространства, что является полной катастрофой из того, что я вообразил выше?

Вопрос:

Как заставить FCGI использовать upload_tmp_dirдиректива так же, как CGI или mod_php? Я не нашел документированного способа изменить используемый временный каталог.

Пожалуйста помоги!?

Просто мысль, но пробовали ли вы передать TMPDIR = / home / domain.com / tmp в среду httpd, чтобы mod_fcgid использовал этот каталог для хранения файлов вместо / tmp?

Это не абсолютно неправильно, между fastCGI и mod_php / cgi есть очень большие различия - не в последнюю очередь в разделении привилегий. С fastCGI веб-сервер ничего не знает о настройке PHP.

Я думал, что перемещение гораздо более изобретательно, чем просто переименование файла в том же каталоге ?!

Существует небольшая разница между переименованием файла в одном каталоге и перемещением файла в той же файловой системе. Однако это не имеет отношения к теме, которую вы здесь обсуждаете. Чтобы файл мог попасть из Apache в PHP, он должен пройти через сокет - следовательно, не имеет значения, если Apache использует путь, отличный от PHP, для хранения файлов.

Хотя вы можете взломать код (это также возможно через среду Apache), чтобы сделать пути одинаковыми, это будет очень плохая идея - так как PHP будет пытаться записать файл, пока Apache пытается читать из него.