PHP5 与 IIS 的集成 (Windows 2003)

正在做“Java 初级”的培训,公司内部。为了说明 MVC,我先讲了 Web 发展,接下来准备从 HTML 讲起,循序渐进的讲到 WebForm/JSF 等,其中一个环节是 Templating 技术。鉴于我对 Java 技术不熟,也没有使用过 Velocity 和 WebMacro,所以我准备使用 phplib 演示。

在配置 PHP 的过程中遇到了几个问题,是前几年没有遇到,或者说没有注意的,今天一并写出来,留个印象吧。

  1. 安装 PHP 之前,建议认真阅读一下 install.txt 文件。尽管网上已经有很多“经验之谈”,官方的文档仍是最准确、最全面的参考。另外,当我遇到问题时,真正帮我解决问题的,还是靠从头仔细阅读该文件。
  2. 建议使用手动安装(Manual Installation)模式,这样会加深你对 PHP 的了解。我一直认为:作为程序员,一定要能够自己搭建开发用的环境(两年前,我曾和一个 QQ 的网友,为此事“吵”一次,呵呵;那时候年轻,要是现在一定懒得多说)。
  3. 在 PHP5 中不建议将 php5ts.dll 和 php.ini 放到 c:\windows 文件夹下,只需设置一下 PATH 路径即可(这个不用我多介绍吧?)。
  4. IIS 和 PHP 的集成
    1. 设置 ISAPI Filter,直接引用 php5isapi.dll 文件即可
    2. 设置 Application Configuration/Mappings,增加对 php 扩展名文件的支持,仍旧使用  php5isapi.dll 文件解析 PHP 请求
    3. 设置 Web Service Extension 信息,在 Windows 2003 上这项配置是必须的,必须将 php5isapi.dll 设置为 Allow 后 PHP 才能够正常运行
  5. 如果完成了以上步骤仍然不好用,记得设置 php 所在文件夹的访问权限。我的机器使用 NTFS 分区,设置了 PHP 文件夹的 Everyone 的 Read、Read & Execute、List Folder Contents 功能后好用了。同时我也设置了 IUSR_MACHINE 的相应权限。
  6. 完成 3 和 5 的操作后,记得要重启系统,切记,切记。
  7. Note: Be sure to reboot after following the steps above to ensure that the PATH changes are applied.

完成以上 6 个步骤后, PHP 就可以正常工作了,只是,此时却不能使用  mysql_connect 函数。也就是说,PHP5 默认不再加载 mysql 驱动,需要我们手动处理。

  1. 搜索 ; extension=php_mysql.dll 行,删除前面的分号
  2. 搜索 ; extension=php_pdo_mysql.dll 行,删除前面的分号(此项我没有测试,只是把和 mysql 相关的 DLL 都 Load 了进来。
  3. 要想让以上“扩展库”好用,必须设置 php.ini 中的 extension_dir
  4. 如果设置了以上内容,mysql 仍然不好用,一定要使用 phpinfo() 确认 php.ini 是否正确加载。
  5. php.ini 的加载设置
    1. 虽然 PHP5 文档中说,不必将 php.ini 放到 c:\windows 文件夹下,但是,只设置了 PATH 信息 PHP 还是找不到该文件。
    2. 在 Windows 平台上,要在“注册表”中增加以下键值,HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath,需要注意的是,要填写 php.ini 所在的文件夹(路径)。
  6. 最后,在 php.ini 中的 short_open_tag 默认值是 Off,即,写 PHP 程序时必须使用 <?php ?> 标签。

进行上面的 N 个步骤处理后,为使 PHP 配置生效,需要重启 IIS 服务,切记。

 

:php.ini is searched in these locations (in order):

  * SAPI module specific location (PHPIniDir directive in Apache 2, -c
    command line option in CGI and CLI, php_ini parameter in NSAPI,
    PHP_INI_PATH environment variable in THTTPD)
  * The PHPRC environment variable. Before PHP 5.2.0 this was checked
    after the registry key mentioned below.
  * As of PHP 5.2.0, the following registry locations are searched in
    order: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z\IniFilePath,
    HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y\IniFilePath and
    HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x\IniFilePath, where x, y and z
    mean the PHP major, minor and release versions.
  * HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry
    location)
  * Current working directory (except CLI)
  * The web server's directory (for SAPI modules), or directory of PHP
    (otherwise in Windows)
  * Windows directory (C:\windows or C:\winnt) (for Windows), or
    --with-config-file-path compile time option

posted on 2007-07-31 22:22  gucs  阅读(823)  评论(0编辑  收藏  举报

导航