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 に変換し、次のコマンドを入力します。
リーリースクリプトの意味は次のとおりです。
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教程有兴趣的朋友有所帮助。