2013-03-30 2 views
0

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

Тем не менее, если фактическая загрузка в происходящем, то при загрузке файл временно собирается /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? Я не нашел документального способа изменить каталог temp, который он использует.

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

ответ

-1

This thread предполагает, что это может быть связано с настройкой уровня безопасности. Если «medium», то FCGI по умолчанию используется по умолчанию для системы.

Не знаете, в какой настройке он ссылается, хотя, поскольку он относится к установке на рабочем столе. Я буду делать рытье.

+0

Ну, друг мой, спасибо, но нет! Я проверил эти настройки и играл с ними всеми возможными способами! И, как я уже сказал, 'CGI' и' mod_php' работают правильно! Таким образом, это не настройки 'suexec' и' basedir'. –

+0

Тем не менее, протектора может быть полезно кому-то.Он описывает (как у вас) ситуацию, когда mod_php ведет себя так, как ожидалось, и fcgi по умолчанию соответствует системному temp dir. Он также документирует два возможных решения, один из которых касается безопасности/suexec и другой (который исправил проблему с плакатами) в качестве пользовательских разрешений. – PassKit

+0

Еще раз спасибо, но, к сожалению, он не решает вопрос вообще, так как ни одна из рекомендаций, которые есть в этой ссылке, не является проблемой! –

0

Этот вопрос обсуждался на bugs.php.net. Возможное решение заключается в том, что вам нужно установить атрибуты чтения в любом родительском каталоге, где находится ваша папка tmp, чтобы она работала. Это может представлять угрозу безопасности.

Я бы рекомендовал создании tmp в /home/tmp установки CHMOD 777 как к home и tmp