Kohana - специфичный для контроллера .htaccess - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь установить некоторые правила htaccess для конкретного контроллера Kohana.В основном это связано с формой загрузки.Большинство сайтов не хотят разрешать большие загрузки, поэтому php.ini останется с рекомендуемыми настройками.

Однако в одном месте требуется загрузка большого файла.У меня есть следующие опции для добавления в мой корневой .htaccess:

php_value max_input_time 60000
php_value post_max_size "1GB"
php_value upload_max_filesize "1GB"
php_value memory_limit "128MB"

Но я не знаю, что сделать, чтобы применить его только для одного контроллера (то есть http://www.mysite.com/massiveupload).

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Есть и другое решение. Еще раз спасибо @LazyOne за подсказку. Это намного удобнее, но требует непосредственного обновления конфигурации Apache (поэтому вы не можете развернуть его на общем хостинге).

Все, что вам нужно сделать, это добавить это в ваш httpd.conf или vhosts.conf (внутри <Directory> или <VirtualHost> согласно Apache Docs ).

<LocationMatch /massiveupload>
    php_flag max_input_time 60000
    php_value post_max_size 1024M
    php_value upload_max_filesize 1024M
    php_value memory_limit 128M
</LocationMatch>

Перезагрузите сервер, и он должен просто работать!

Обратите внимание, что хотя LocationMatch анализирует /massiveupload как регулярное выражение, мы не можем использовать ^/massiveupload (обратите внимание на символ ^ для соответствия началу строки). Это связано с тем, что произойдет сбой, если вы используете ModRewrite (который внутренне изменяет окончательный URL-адрес запроса).

Обратите внимание, что вы не должны указывать upload_max_filesize и post_max_size одинакового размера, потому что если вы загружаете файл, который только достигает предела upload_max_filesize, любые другие данные поста приведут к тому, что он превысит post_max_size и отправка формы не удастся.

0 голосов
/ 08 июля 2011

То, что предложил @LazyOne, на самом деле довольно просто сделать.

Рассмотрим эту структуру папок (перечисляются только самые важные файлы / папки):

application/
    bootstrap.php
lib/
    kohana-3.0.8/
        modules/
        system/
public_html/              <----- this is your DOCUMENT_ROOT
    .htaccess
    index.php

И учтите, что вы используете по умолчанию Kohana's .htaccess:

RewriteEngine On
RewriteBase /

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
  1. Теперь создайте папку upload/ в вашем public_html/.
  2. Скопируйте .htaccess и index.php из DOCUMENT_ROOT в папку upload/.
  3. Отредактируйте upload/.htaccess: (отображаются только новые измененные строки)

    php_flag max_input_time 86400
    php_value post_max_size 1536M
    php_value upload_max_filesize 1024M
    
    RewriteEngine On
    RewriteBase /upload/
    ...
    RewriteRule .* index.php/upload/$0 [PT]
    
  4. Отредактируйте upload/index.php и обновите все пути ($ application, $ modules, $ system). Вы можете скачать весь протестированный пакет

  5. Создание контроллера загрузки.

Кроме того, вы можете разбить index.php на две части (вырезать после определения путей), чтобы не дублировать весь файл.

Настройка, подобная этой, отлично сработала, и вы можете загрузить мое тестовое приложение отсюда: http://d.pr/ioYk

...