2016-07-21 19 views
1

我在Microsoft Windows Server 2008 Standard 6.0 SP2上安裝了IIS 7.0和兩個版本PHP v5v7。問題是,PHP7或IIS嘗試使用IIS的「網站」的PHP5的php.ini。如何在Windows Server 2008 R2上爲PHP CGI/FastCGI SAPI設置php.ini路徑?

所以在命令行上,一切都很好:

X:\>php -v 
PHP 7.0.2 (cli) (built: Jan 6 2016 12:59:59) (NTS) 
Copyright (c) 1997-2015 The PHP Group 
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies 

X:\>php --ini 
Configuration File (php.ini) Path: C:\Windows 
Loaded Configuration File:   D:\Data\Programme\php7\php.ini 
Scan for additional .ini files in: (none) 
Additional .ini files parsed:  (none) 

但在IIS管理器和phpinfo()輸出不是:

IIS-website-PHP-setting

phpinfo-version-sapi-php-ini

我認爲,這是一個PHP(cgi-fcgi SAPI)問題,不是是一個IIS問題(但不確定)。

如何在Windows Server 2008上爲PHP CGI/FastCGI SAPI設置正確的php.ini


還試圖過來註冊表,但這並沒有幫助:

registry-php-IniFilePath

+0

我知道我不得不在* Linux下處理* Apache *下的類似情況,但是我想知道是否可以在這裏使用相同的方法。基本上,我創建了兩個單獨的「CGI文件」,每個文件基本歸結爲:'exec/path/to/php-cgi --php-ini /path/to/php.ini $ PATH_TRANSLATED'。也就是說,該命令文件明確調用了一個PHP解釋器,並明確告訴它要使用哪個'php.ini'文件。它在我看來似乎可以在這裏製作類似的方法。 。 。 (並且,P.S .:「我認爲它也是'cgi-fcgi'」) –

+0

考慮我以前的評論是關於這個* FastCGI *(不管主機環境...),我知道可以指定「FastCGI工蜂的獨立*池」,並將傳入的請求定向到合適的請求。您應該能夠以某種方式設置兩個池:一個用於PHP5,另一個用於PHP7。 。 。希望我能更具體一些,但最近我還沒有做過Windows託管的項目。 –

+0

@MikeRobinson謝謝你也試圖幫助解決這個問題!但再一次:問題不在於,使用了錯誤的PHP版本(或者在這種情況下錯誤的'php-cgi.exe')。問題是,在某個地方配置好了,'D:\ path \ to \ php7 \ php-cgi.exe'必須從'D:\ path \到\ php5 \ php.ini'取代其配置文件(而不是' d:\路徑\到\ PHP7 \ php.ini')。所以我必須找出爲什麼它被配置爲一個奇怪的方式以及如何改變它。 – automatix

回答

2

的的Jan Reilinksolution似乎也是正確的,但不幸的是我無法找到答案,如何運用正確的方式(見this等我下面揚的回答評論)。

最後我得到了它解決了在IIS GUI:

IIS GUI -> FastCGI Settings

然後FastCGI Settings -> EnvironmentVariables -> PHPRC

IIS-FastCGI-Settings-EnvironmentVariables-PHPRC

參見 「Configure IIS to Handle PHP Requests」 一章中的「使用FastCGI到主機IIS文檔的IIS 7上的PHP應用程序「。

1

你需要設置環境變量在你的FastCGI配置託管多個PHP版本的IIS。你想要的是PHPRC:

AppCmd set config -section:system.webServer/fastCgi 
    /+"[fullPath='c:\php5\php-cgi.exe', arguments='-c 
    c:\php5\php.ini'].environmentVariables. 
    [name='PHPRC',value='c:\php5\php.ini']" /commit:apphost 

(注意-c參數以及)

並做PHP 7相同,改變路徑。我有這個,還有更多,在我的博客文章https://www.saotn.org/php-wincache-on-iis/中解釋。

+0

謝謝你的回答!是的,問題似乎在這裏。我有另一個Windows Server,其中兩個PHP版本運行良好,這些機器之間的區別是:'C:\ ... \ appcmd list config':' ...'' ...。 – automatix

+0

但當我嘗試'C:\ ... \ appcmd設置配置/section:system.webServer/fastCgi /[fullPath='D:\Data\Programme\php7\php-cgi.exe'].environmentVariables.[name ='PHPRC',value ='D:\ Data \ Program \ php7 \']/commit:apphost'我得到一個錯誤:'錯誤(消息:找不到標識符爲SITE的對象「value ='D:\ Data \ Program \ php7 \']「。)'。爲什麼? – automatix

+0

當我刪除'名= 'PHPRC','和'值=之間的空白 'd:\數據\程序\ PHP7 \''('C:\ ... \ APPCMD設置配置/section:system.webServer/ fastCgi /[fullPath='D:\Data\Programme\php7\php-cgi.exe']。environmentVariables。[name ='PHPRC',value ='D:\ Data \ Program \ php7 \']/commit:apphost '),我得到另一個錯誤:'錯誤(消息:找不到請求的集合元素)'。 – automatix

相關問題