Führen Sie PHP im FastCGI-Modus unter IIS aus
Aufgrund der Verbesserung von PHP5.3 wird das ursprüngliche IIS-Parsing von PHP-Skripten ab Version 5.3.0 nicht mehr unterstützt. Dies ist eine fortschrittlichere Methode und läuft schneller. In diesem Artikel wird die Ausführung von PHP im FastCGI-Modus auf IIS vorgestellt. Nehmen wir als Beispiel Windows 2003 IIS 6.0 (im Lieferumfang von Windows 2003 enthalten).
Schritt 1: Laden Sie die Installationsdateien herunter
1. FastCGI-Version fcgisetup_1.5_x86_rtw.msi
2. MySQL-Version mysql-5.5.19-win32.msi
3. PHP-Version php-5.3.8-nts-Win32-VC9-x86.zip
Tipp:
1. Wir verwenden hier die neueste FastCGI 1.5-Version. Offizielle Adresse
2. Um MySQL unter Windows zu installieren, wählen Sie einfach mysql-5.5.19-win32.msi und folgen Sie dem Assistenten zur Installation.
3. Für PHP entscheiden wir uns für die Version php-5.3.8-nts-Win32-VC9-x86.zip. „vc9“ ist für IIS angepasst. „nts“ ist die nicht-threadsichere Version für die FastCGI-Installation von PHP.
Schritt 2: Installieren Sie die Dateien
1. Erstellen Sie einen Ordner auf der Festplatte, der installiert werden soll. Wir erstellen einen Webordner im Stammverzeichnis des Laufwerks D. D:Web.
2. Erstellen Sie unter dem Web-Ordner einen WWW-Ordner, um Ihr PHP-Website-Programm zu speichern. D:WebWWW.
3. Entpacken Sie die heruntergeladene Datei php-5.3.8-nts-Win32-VC9-x86.zip in den Ordner D:WebPHP.
4. Installieren Sie die MySql-Datenbank und installieren Sie MySQL im Ordner D:WebMySQL. Informationen zum spezifischen MySQL-Installationsprozess finden Sie im Dokument MySQL-Installationsdiagramm.
5. Installieren Sie die FastCGI-Erweiterung für IIS. Stellen Sie zunächst sicher, dass IIS auf dem System installiert ist. Doppelklicken Sie dann zum Installieren auf fcgisetup_1.5_x86_rtw.msi. Wenn das Laufwerk C Ihr Windows-Systeminstallationsdatenträger ist, werden die fcgi-spezifischen Dateien in den Ordner C:Windowssystem32inetsrv kopiert, registriert und der fcgi-Webdienst wird aktiviert Diesmal enthält die IIS-„Web Service Extension“ den FastCGI-Handler.
Schritt 3: IIS konfigurieren
1. Klicken Sie auf „Systemsteuerung“ -> „Verwaltung“ -> „Internetinformationsdienste“ (oder klicken Sie direkt auf „Start“ -> „Ausführen“ -> geben Sie inetmgr.exe ein), um IIS zu öffnen.
2. Klicken Sie auf „Website“ -> „Rechtsklick-Eigenschaften“ und dann im Eigenschaftendialogfeld auf „Home-Verzeichnis“ -> „Konfiguration“ -> „Hinzufügen“.
3. Klicken Sie im Dialogfeld „Anwendungserweiterungszuordnung hinzufügen und bearbeiten“ auf „Durchsuchen“, um fcgiext.dll in C:Windowssystem32inetsrv zu finden. Schreiben Sie „.php“ für die Erweiterung, klicken Sie im Punkt „Aktion“ auf „Begrenzen auf“, schreiben Sie „GET, POST, HEAD“ und überprüfen Sie die folgenden beiden Optionen „Script Engine“ und „Bestätigen Sie, ob die Datei existiert“. Bestätigen Sie die Konfiguration.
4. Kehren Sie zum Feld mit den Website-Eigenschaften zurück, klicken Sie auf „Dokument“ und fügen Sie „index.php“ als Standardseite hinzu. Klicken Sie abschließend auf „Bestätigen“.
5. Klicken Sie auf „Website“ -> „Rechtsklick-Neu“ -> „Website“, um eine neue Site zu erstellen. Der Port ist hier auf 8080 eingestellt und der Pfad zum Home-Verzeichnis der Website ist D:WebWWW.
Schritt 4: FastCGI konfigurieren
Nach der Installation von FastCGI befinden sich die folgenden drei wichtigen Dateien im Ordner C:Windowssystem32inetsrv:
fcgiext.dll – Dies ist die dynamische Linkbibliothek für das Fastcgi-Handle. Es kann Anfragen für Programme verarbeiten, die mit fastcgi kommunizieren.
fcgiext.ini – Dies ist die Konfigurationsdatei, die auf den Fastcgi-Prozess erweiterte Dateizuordnungen enthält. Es enthält auch die Konfiguration des Fastcgi-Prozesspools.
fcgiconfig.js – Diese Konfigurationserweiterung für fastgci. Dieses Skript aktualisiert die Datei fcgiext.ini, ändert die IIS-Metabasis und verwendet den Webdienst-Anwendungspool bei Bedarf wieder.
Hier gibt es zwei Möglichkeiten, FastCGI zu konfigurieren: Eine besteht darin, über die Befehlszeile zu konfigurieren, und die andere darin, die Datei fcgiext.ini direkt zu ändern.
1. Konfiguration über die Befehlszeile
Öffnen Sie die Befehlszeile, konvertieren Sie die Adresse in C:Windowssystem32inetsrv und geben Sie den folgenden Befehl ein
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"D:\Web\php\php-cgi.exe" cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:5000 cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000 cscript fcgiconfig.js -set -section:"PHP" -RequestTimeout:360 cscript fcgiconfig.js -set -section:"PHP" -ActivityTimeout:120
Die Bedeutungen der Skripte sind:
2. Konfigurieren Sie fcgiext.ini direkt
Öffnen Sie die Datei C:windowssystem32inetsrvfcgiext.ini und fügen Sie hinzu
[Types] php=PHP [PHP] ExePath=D:\Web\php\php-cgi.exe InstanceMaxRequests=5000 EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000 RequestTimeout=360 ActivityTimeout=120
Tipp: „php“ steht für die Erweiterung und „PHP“ ist der Name des Konfigurationsabschnitts, definiert mit „[PHP]“.
Kopieren Sie den obigen Code an das Ende von fcgiext.ini und speichern Sie ihn.
Schritt 5: PHP konfigurieren
打开PHP安装目录,即D:\Web\PHP,我们可以看到目录下有两个这样的文件 php.ini-development 和 php.ini-production,第一个是开发使用的配置文件,第二个是生产环境的配置,因为我们是在本机做开发,所以选择前者。将php.ini-development复制一份到同目录下,并改名为 php.ini。这个php.ini 就是当前使用的配置文件,以下几步都是在修改这个php.ini文件的内容。 另外要注意的是修改php.ini文件后需重新启动IIS服务,新设置才会生效。参见文档:如何重启IIS服务的方法
1. 设置关于FastCGI部分
找到下面几行,那前面的引号“;” 去掉,参数设置为如下
fastcgi.impersonate = 1 cgi.fix_pathinfo= 1 cgi.force_redirect = 0
它们的说明请参考cgi.force-redirect;cgi.fix-pathinfo;fastcgi.impersonate。
2. 指定PHP扩展库的存放目录
在Windows下PHP的扩展库通常以 DLL 形式存放在PHP的ext目录中。
使用文本工具打开php.ini文件,查找extension_dir = "ext",也就是在 On windows 下面那一行。把它前面的分号“;”去除掉,改为如下:
extension_dir = "D:/Web/PHP/ext"
extension_dir 表示PHP扩展库的具体目录,以便调用相应的DLL文件。
3. 开启相应的扩展库
默认情况下许多PHP的扩展库都是关闭的,比如默认PHP不支持连接Mysql数据库,需开启相应的扩展库。
这里我们开启一些常用的扩展库。
查找 ; Windows Extensions(大概在941行),在它的下面是extension列表。
找到如下扩展:
;extension=php_curl.dll ;extension=php_gd2.dll ;extension=php_mbstring.dll ;extension=php_exif.dll ;extension=php_mysql.dll ;extension=php_mysqli.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_odbc.dll ;extension=php_sockets.dll ;extension=php_xmlrpc.dll ;extension=php_xsl.dll
把以上extension 前面的分号 “;” 去掉。如果你希望加载其它扩展模块,方法相同,只要去掉前面的分号即可。
提示1:Exif 扩展是用来显示图片的 exif 信息的,因为该扩展需要 mbstring.dll 支持,所以必须将 extension=php_exif.dll 这一行写到extension=php_mbstring.dll 的后面。
提示2:如果PHP自带的扩展库不能满足你的需要,你可以去 pecl.php.net 查找并下载你需要的库。windows用户可以去 pecl4win.php.net 或者 http://downloads.php.net/pierre/ 下载已经编译好的DLL文件,也可以去http://museum.php.net/php5/ 载PECL集合压缩包。
提示3:很多人在找php_zip.dll,其实从php5.3开始已经集成了zip扩展,你可以用 找到zip扩展的说明。
4. 让PHP支持短标签
在 php.ini 配置文件查找 short_open_tag = Off (大概在266行)把它修改成:short_open_tag = On 让其支持短标签。
php的代码一般包含在的标签内,设置 short_open_tag = On 之后,可以写成更简洁的形式: .... ?>。
5. 配置PHP的Session功能
在使用session功能时,我们必须配置session文件在服务器上的保存目录。我们需要为session建立一个可读写的目录,这个目录最好独立于网站目录之外。
这里把目录上建在了D:\Web\sessiontmp,然后在 php.ini 配置文件中找 ;session.save_path = "/tmp" (大概在1467行),去掉前面的分号“;” ,改为如下:
session.save_path = "D:/Web/sessiontmp"
6. 配置PHP的文件上传功能
同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败。
我们建立一个可读写的目录文件夹 D:\Web\fileuploadtmp,然后在 php.ini 配置文件中找到 ;upload_tmp_dir = (大概875行),修改为:
upload_tmp_dir = "D:/Web/fileuploadtmp"
PHP默认上传文件大小不超过2M,要想上传大于2M的文件,请参考文档 配置php.ini实现文件上传功能。
7. 设置时区
在 php.ini 配置文件查找 ;date.timezone = ,去掉前面的分号“;” 改为如下:
date.timezone = PRC
date.timezone是PHP5.1开始新增加的配置参数,用来设置时区。默认date.timezone是被注释掉的,也就是默认时区是UTC格林威治标准时间。
我们这里改为 date.timezone = PRC(PRC,People’s Republic of China,中华人民共和国),也就是日期使用中国的时区。这样可以解决时间相差八小时的问题。
第六步:测试
将如下代码保存为index.php文件,放到D:\Web\WWW目录下面。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试服务器</title> </head> <body> <div> <?php $link=mysql_connect("localhost","<em>你的mysql管理账号</em>","<em>你的mysql管理密码</em>"); if(!$link) echo "MySQL数据库 连接失败!"; else echo "MySQL数据库 连接成功!"; mysql_close(); ?> </div> <br/> <?php phpinfo(); ?> </body> </html>
然后在浏览器地址栏输入“http://localhost:8080/index.php”。结果如下图所示:
以上就介绍了IIS下使用FastCGI模式运行PHP,包括了FastCGI模式方面的内容,希望对PHP教程有兴趣的朋友有所帮助。