я бегу 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 пытается читать из него.