2012-04-09 46 views
4

我在嘗試更改上傳的大小限制。我知道我必須要改變這些指令,在Apache的配置(一些使用的ini_set不能更改)每個目錄下的PHP ini指令取決於request_uri

php_value session.gc_maxlifetime 3600 
php_value max_input_time   3600 
php_value max_execution_time  3600 
php_value upload_max_filesize 10M 
php_value post_max_size   110M 

不幸的是,我不能在我的虛擬主機的<Directory>直接做到這一點,因爲該目錄是始終相同的(我使用的是前端控制器,因此所有的請求都會通過index.php &被調度到適當的控制器 - 我使用Symfony)

我的問題是,我該如何避免這個問題?我不想爲整個應用程序設置這些值,只是針對特定的操作。

+2

這是什麼問題? – Jon 2012-04-09 08:14:20

+0

我剛剛更新了我的問題 – haltabush 2012-04-09 08:20:00

回答

2

這是可能的,這取決於您如何映射到您的前端控制器。如果您通過重寫規則執行此操作,則可以使用<Location>而不是<Directory>塊來指定要更改其設置的路徑塊。 <LocationMatch>可讓您使用正則表達式來執行相同的操作。

如果所有的外部URL的真與​​開始,然後考慮設立一個重定向規則尤其是對這些請求:

RewriteEngine on 
RewriteRule ^foo/$ ^/index.php [L] 

<Location /foo/> 
    php_value ... 
</Location> 

如果不是的話,你需要告訴我們更多關於您的應用程序結構體。

+0

我沒有想到,但位置標記起作用:)謝謝! – haltabush 2012-04-09 09:16:41

+1

您是否設法在'Location'或'LocationMatch'指令中設置了php_value?我使用Apache 2.4,它不會讓我這樣做。它什麼都不做。謝謝 – mentinet 2017-05-23 11:54:58

1

一種可能的解決方法是創建一個內部具有一個PHP文件的目錄,該文件實現您的操作並具有使用「自定義」URL提交POST目標文件的腳本。處理完輸入後,您將通過index.php重定向回普通頁面。它不乾淨,但它應該工作。

這也可能是值得考慮的是你從中得到了什麼。

  • 它沒有任何意義,設置session.gc_maxlifetime在短短一個行動(尤其是如果你正在增加它)
  • 限制max_input_time到一個小時也沒有意義,如果max_execution_time也1小時
  • max_execution_time可以在運行時設置
  • 其他兩個指令不能在運行時設置,但POST大小應該不重要,上傳的文件大小可以在運行時檢查並且ha ndled

那麼,這裏的目標是什麼?

+0

謝謝您指出無用的值 – haltabush 2012-04-09 09:18:10