Verwenden Sie den FastCGI-Modus, um PHP unter IIS auszuführen

WBOY
Freigeben: 2016-08-08 09:33:31
Original
1375 Leute haben es durchsucht

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
Nach dem Login kopieren

Die Bedeutungen der Skripte sind:

  1. Registrieren Sie PHP bei FastCGI.
  2. InstanceMaxRequests wird verwendet, um das Recycling des Anwendungspools festzulegen. Die Anzahl der FastCGI-Prozessanforderungen erreicht den InstanceMaxRequests-Wert von 5000 und der Anwendungspool wird automatisch recycelt. Der Standardwert ist 1000.
  3. Wenn die Umgebungsvariable PHP_FCGI_MAX_REQUESTS 10000 erreicht, wird der Anwendungspool automatisch recycelt.
  4. RequestTimeout legt das Anforderungszeitlimit fest. Dies ist die maximal zulässige Zeit für die Anforderung. Wenn die FastCGI-Prozessanforderung diese Einstellung überschreitet, wird sie verboten.
  5. ActivityTimeout gibt die maximale aktive Zeit an, die vom FastCGI-Prozess angefordert wird. Wenn innerhalb der festgelegten Zeit keine Kommunikation zwischen dem FastCGI-Prozess und IIS stattfindet, wird der Prozess beendet. Der Standardwert beträgt 70 Sekunden.

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
Nach dem Login kopieren

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
Nach dem Login kopieren

它们的说明请参考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"
Nach dem Login kopieren

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
Nach dem Login kopieren

把以上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"
Nach dem Login kopieren

6. 配置PHP的文件上传功能

同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败。
我们建立一个可读写的目录文件夹 D:\Web\fileuploadtmp,然后在 php.ini 配置文件中找到 ;upload_tmp_dir = (大概875行),修改为:

        upload_tmp_dir = "D:/Web/fileuploadtmp"
Nach dem Login kopieren

PHP默认上传文件大小不超过2M,要想上传大于2M的文件,请参考文档  配置php.ini实现文件上传功能。

7. 设置时区

在 php.ini 配置文件查找 ;date.timezone = ,去掉前面的分号“;” 改为如下:

	date.timezone = PRC
Nach dem Login kopieren

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>
Nach dem Login kopieren

然后在浏览器地址栏输入“http://localhost:8080/index.php”。结果如下图所示:

以上就介绍了IIS下使用FastCGI模式运行PHP,包括了FastCGI模式方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage