ホームページ  >  記事  >  バックエンド開発  >  FastCGI モードを使用して IIS で PHP を実行する

FastCGI モードを使用して IIS で PHP を実行する

WBOY
WBOYオリジナル
2016-08-08 09:33:311327ブラウズ

IIS で FastCGI モードで PHP を実行する

PHP5.3 の改良により、isapi を介した元の IIS の PHP スクリプト解析はサポートされなくなりました。PHP は、バージョン 5.3.0 以降、より高度な方法であり、より高速に実行されます。この記事では、IIS 上で FastCGI モードで PHP を実行する方法について説明します。 Windows 2003 + IIS 6.0 (Windows 2003 に付属) を例に挙げてみましょう。

ステップ 1: インストール ファイルをダウンロードする

1. FastCGI バージョン fcgisetup_1.5_x86_rtw.msi
2. MySQL バージョン mysql-5.5.19-win32.msi
3. PHP バージョン php-5.3.8-nts-Win32-VC9-x86.zip

ヒント:
1. ここでは最新の FastCGI 1.5 バージョンを使用します。公式アドレス
2. Windows に MySQL をインストールするには、.msi インストール パッケージ形式を選択します。ダブルクリックしてウィザードに従ってインストールするだけです。
3. PHP の場合、php-5.3.8-nts-Win32-VC9-x86.zip バージョンを使用することを選択します。 「vc9」は IIS 用にカスタマイズされています。 「nts」は、PHP の FastCGI インストール用の非スレッドセーフ バージョンです。​

ステップ 2: ファイルをインストールする

1. ディスク上にインストール先のフォルダーを作成します。 DドライブのルートディレクトリにWebフォルダを作成します。 D:ウェブ。
2. Web フォルダの下に WWW フォルダを作成し、PHP Web サイト プログラムを保存します。 D:WebWWW。
3. ダウンロードした php-5.3.8-nts-Win32-VC9-x86.zip を D:WebPHP フォルダーに解凍します。
4. MySql データベースをインストールし、MySQL を D:WebMySQL フォルダーにインストールします。特定の MySQL インストール プロセスについては、ドキュメント「MySQL インストール図」を参照してください。
5. IIS 用の FastCGI 拡張機能をインストールします。まず、IIS がシステムにインストールされていることを確認します。次に、fcgisetup_1.5_x86_rtw.msi をダブルクリックしてインストールします。C ドライブが Windows システムのインストール ディスクである場合、fcgi 固有のファイルが C:Windowssystem32inetsrv フォルダーにコピーされ、fcgi Web サービスが有効になります。今回は、IISの「Webサービス拡張機能」にFastCGIハンドラが含まれています。

ステップ 3: IIS を構成する

1. [コントロール パネル] -> [管理ツール] -> [インターネット インフォメーション サービス] をクリックして (または直接 [スタート] -> [ファイル名を指定して実行] をクリックして、inetmgr.exe を入力します)。
2. [Web サイト] -> [右クリック - プロパティ] をクリックし、プロパティ ダイアログ ボックスで [ホーム ディレクトリ] -> [構成] -> [追加] をクリックします。
3. [アプリケーション拡張子マッピングの追加と編集] ダイアログ ボックスで、[参照] をクリックして C:Windowssystem32inetsrv にある fcgiext.dll を見つけます。拡張子を「.php」と記述し、「アクション」項目の「制限」をクリックし、「GET、POST、HEAD」と記述し、次の2つのオプション「スクリプトエンジン」と「ファイルが存在するかどうかを確認する」にチェックを入れます。構成を確認します。
4. Web サイトのプロパティ ボックスに戻り、[ドキュメント] をクリックして、デフォルト ページとして「index.php」を追加します。最後に「確認」をクリックします。
5. [Web サイト] -> [右クリック - 新規作成] -> [Web サイト] をクリックして新しいサイトを作成します。ここでのポートは 8080 に設定され、Web サイトのホーム ディレクトリのパスは D:WebWWW です。

ステップ 4: FastCGI を構成する

FastCGI をインストールすると、C:Windowssystem32inetsrv フォルダーに次の 3 つの重要なファイルが存在します。

fcgiext.dll - これは fastcgi ハンドルのダイナミック リンク ライブラリです。 fastcgi と通信するプログラムのリクエストを処理できます。
fcgiext.ini - これは、fastcgi プロセスに拡張されたファイル マッピングを含む構成ファイルです。 fastcgi プロセス プールの構成も含まれています。
fcgiconfig.js - この拡張機能は fastgci を構成します。このスクリプトは、fcgiext.ini ファイルを更新し、iis メタベースを変更し、必要に応じて Web サービス アプリケーション プールを再利用します。

ここで FastCGI を構成するには 2 つの方法があります。1 つはコマンド ラインを使用して構成する方法、もう 1 つは fcgiext.ini ファイルを直接変更する方法です。

1. コマンドラインによる設定

コマンド ラインを開き、アドレスを C:Windowssystem32inetsrv に変換し、次のコマンドを入力します。

リーリー

スクリプトの意味は次のとおりです。

  1. PHPをFastCGIに登録します。
  2. InstanceMaxRequests は、アプリケーション プールのリサイクルを設定するために使用されます。 FastCGI プロセス リクエストの数が InstanceMaxRequests 値の 5000 に達すると、アプリケーション プールは自動的にリサイクルされます。デフォルト値は 1000 です。
  3. 環境変数 PHP_FCGI_MAX_REQUESTS が 10000 に達すると、アプリケーション プールは自動的にリサイクルされます。
  4. RequestTimeout はリクエストのタイムアウトを設定します。これは、FastCGI プロセス リクエストがこの設定を超えると禁止されます。値は 90 秒です。
  5. ActivityTimeout は、FastCGI プロセスによって要求される最大アクティブ時間を指定します。設定された時間内に FastCGI プロセスと IIS の間の通信がない場合、プロセスは終了します。デフォルト値は 70 秒です。

2. fcgiext.ini を直接設定する

C:windowssystem32inetsrvfcgiext.ini ファイルを開いて追加します。

リーリー

ヒント: 「php」は拡張子を表し、「PHP」は「[PHP]」で定義された構成セクション名です。

上記のコードを fcgiext.ini の末尾にコピーして保存します。

ステップ 5: PHP を構成する

打开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教程有兴趣的朋友有所帮助。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。