Php

在 Debian Squeeze Apache 2.4.10 + mod_proxy_fcgi + php-fpm 上的 VirtualHost 中設置 php_value?

  • June 26, 2016

將我們的伺服器更新到 Debian Jessie (8.3) 後,我將 Apache 2.4.10 從 mpm_worker/mod_php 切換到 mpm_event/proxy_fcgi/php-fpm。我為所有虛擬主機配置了切換,如下所示:

# cat conf-enabled/php5-fpm.conf 
<FilesMatch \.php$>
   SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
</FilesMatch>

我還禁用了 mod_php。因此,apache 不會讓我在 VirtualHosts 文件中有 php_admin_value/php_value/php_flag 指令。

Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration

我已經閱讀了一些關於 .user.ini 文件的資訊,但聽起來我需要設置的指令在那裡不受支持,並且出於性能原因,我剛剛成功地從我的站點中刪除了所有 .htaccess 文件,所以這似乎是一種向後(且不兼容)的方法。

另一個常見的建議是為每個 VirtualHost 創建一個唯一的池,但這讓我擔心有兩個原因:

  1. 設置的複雜性 - 現在,配置非常簡單
  2. 從套接字切換到 TCP?我是否正確,我需要每個池一個唯一的 TCP 埠?我是否需要每個池一個唯一的套接字?
  3. 記憶體分配!該伺服器沒有我想要的那麼多記憶體。為伺服器上訪問量較小的站點創建一堆 php-fpm 實例似乎很浪費。

最後,我只是定義了一些

$$ HOST= $$我的 /etc/php5/fpm/php.ini 配置中的部分。 http://php.net/manual/en/ini.sections.php

這感覺比使用 mod_env 或 .user.ini 更安全。

您可以將環境變數從 Apache 配置文件傳遞到 CGI 池:

   SetEnv PHP_ADMIN_VALUE "open_basedir=/path-to-your-doc-root"
   <FilesMatch \.php$>
       SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
   </FilesMatch>

mod_env必須啟用,並且您必須禁用.htaccess文件處理,如果第三方使用者可以上傳或修改它們 ( AllowOverride None)。如果您需要傳遞多個變數,則必須用換行符 ( \n) 將它們連接起來。

open_basedir惡意使用者可以disable_functions使用簡單的.htaccess. 我不知道是否可以防止這種行為。

參考:https ://bugs.php.net/bug.php?id=51595

引用自:https://serverfault.com/questions/763719