PHP 5.6 SVR(SAPI Virtual Directory)是一種在 PHP 5.6 中引入的新特性。它是通過將 PHP 與 web 服務(wù)器的 SAPI(Server Application Programming Interface)結(jié)合起來,以提供更強大的虛擬目錄支持。
以 Apache 服務(wù)器為例,我們可以使用 PHP 5.6 SVR 將請求映射到虛擬目錄,例如 Apache 的 AliasMatch 指令:
AliasMatch "^/php56/(?P<filename>.+\.php)$" "/path/to/php56/bin/php-cgi.exe -c /path/to/php56/php.ini"
在上述指令中,所有以 /php56/ 開頭并且以 .php 結(jié)尾的請求都會被映射到 /path/to/php56/bin/php-cgi.exe,并使用 /path/to/php56/php.ini 配置文件中的 PHP 解釋器執(zhí)行。這使得我們可以輕松地為不同的虛擬目錄配置不同版本的 PHP 解釋器,以滿足不同項目的需求。
除了支持虛擬目錄外,PHP 5.6 SVR 還提供了以下功能:
- 支持 SAPI 原生的 URL 重寫規(guī)則,例如 Apache 的 mod_rewrite 模塊;
- 支持在虛擬目錄下使用 PHP-fpm(FastCGI Process Manager)。
要啟用 PHP 5.6 SVR,我們需要在 PHP 的 configure 命令中加入 --enable-svr 選項,并指定一個類 Unix 套接字文件或命名管道作為 SAPI 的通信通道。例如:
$ ./configure --enable-svr --with-svr=/var/run/php56-svr.sock
上述命令中,我們指定 /var/run/php56-svr.sock 作為 SAPI 的通信通道。在完成編譯后,我們可以在 Apache 的配置文件中啟用 PHP 5.6 SVR:
LoadModule svr_module /path/to/php56/modules/mod_svr.so PHPIniDir /path/to/php56 PHPIniDir /path/to/project1 PHPIniDir /path/to/project2 <VirtualHost *:80> DocumentRoot /path/to/project1 SvrRoot /path/to/project1 SvrAlias /lib /path/to/project1/lib ... </VirtualHost> <VirtualHost *:80> DocumentRoot /path/to/project2 SvrRoot /path/to/project2 SvrAlias /lib /path/to/project2/lib ... </VirtualHost>
在上述配置中,我們加入了 SvrRoot 和 SvrAlias 指令,分別用于指定項目的根目錄和自定義虛擬目錄。同時,我們也可以為不同的項目指定不同的 PHP 配置文件,以滿足不同的需求。
總之,PHP 5.6 SVR 為我們提供了更加強大的虛擬目錄支持,使得我們可以更好地管理不同項目和版本的 PHP 解釋器。同時,它還支持 SAPI 原生的 URL 重寫規(guī)則和 PHP-fpm,為我們提供更多的選擇和靈活性。