win2003下php开发有关环境搭建问题

win2003+IIS6+PHP5.3.8+MSSQL2008的安装配置及连接
(该方法适用于PHP 5.3及以后版本,SQL Server 2000/2005/2008)
 -----------------------------------------------------------------------------------------------------------------------------
PHP5.3通过以往老方法已经不能在IIS上安装了(因为现在php 5.3已经不支持ISAPI了,而是用FastCGI了)。
(1)确定已经安装IIS
(2)下载并安装IIS FastCGI,下载地址:http://www.iis.net/download/fastcgi。选择 x86或者download x86,下载下来名称为 fcgisetup_1.5_rtw_x86.msi。
安装成功后会在C:\WINDOWS\system32\inetsrv\目录下多5个文件(fcgi开头),同时在IIS 6的"WEB服务扩展"里就多出了一个FastCGI Handler。

win7的IIS 7似乎自带FastCGI,也可以从http://www.iis.net/downloads/microsoft/fastcgi-for-iis用网络方式安装IIS7适用版本(win2008x86也是如此,即在安装角色IIS时选择CGI即可)
下载安装IIS下的PHP5.3.8,下载地址http://windows.php.net/download/,(注意IIS下要选择VC9的版本)解压到所需目录(我们是D:\App\php),该目录需要给予user读取运行权限。

根据php官网提示,IIS+FastCGI应该用nts版本(非线程安全的版本)。而且给我的win7 X64用,只有用VC11编译的5.5的版本(2014May1st的结果),而且是实验性的版本。根据试验,也可以兼容方式使用32位版本,可以正常工作。
如果你的PHP5.3.8是安装版(即以.msi结尾的)安装完所有的软件就可以直接测试运行,安装过程中已经帮你配置完成。如果你的PHP5.3.8是压缩版(即以.zip结尾的)安装完后要作以下配置。
(4)环境变量修改。我的电脑》属性》高级》环境变量》系统变量Path:D:\App\php;(加到最前面,如果没有可以自己建一个。)
(5)FastCGI安装目录内的修改(注册PHP 到 FastCGI)。
打开C:\WINDOWS\system32\inetsrv\fcgiext.ini文件,在文件最后加上下面的语句:
---------------------------------------------------------------------------
[Types](这个是文件原来就有的,在[Types]后面加上下面的语句就可以,要全部哦不然会报错的。)
php=PHP
 
[PHP]
ExePath=D:\app\php\php-cgi.exe
InstanceMaxRequests=10000
ActivityTimeout=600
RequestTimeout=600
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:D:\app\php\
----------------------------------------------------------------------------
(6)PHP.ini的修改。
PHP5.3.8安装目录下是没有PHP.ini这个文件的,只有php.ini-development和php.ini-production,我们把php.ini-development复制一份为php.ini。
注意:首先建一个文件夹命名为TMP,位置随意我这里放在D:\App\php\tmp。 (upload_tmp_dir会用到,upload_tmp_dir是用来定义上传文件存放的临时路径,这里可以修改并给它定义一个绝对路径,同时需要有读、写权限)。用搜索(快捷键:Ctrl+F)的方式把下面的关键字改成现在的值:
----------------------------------------------------------------------------------
short_open_tag = Off    (这个它本来默认就是这样我们就不要改了。)
把;upload_tmp_dir =改为upload_tmp_dir = "D:\App\php\tmp"    
把;cgi.force_redirect = 1改为cgi.force_redirect=0       
把;fastcgi.impersonate = 1;改为 fastcgi.impersonate=1;        
把; extension_dir = "ext"改为extension_dir = "D:\app\php\ext"    
把;date.timezone =改为date.timezone =PRC(如果不修改date.timezone,打开网页的时候可能提示500错误。也有人把值改为Asia/Shanghai,我没试过你们可以试试。)      
在Windows Extensions中去除扩展前面的分号(;):
extension=php_curl.dll
extension=php_gd2.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_sockets.dll
extension=php_xmlrpc.dll  
-----------------------------------------------------------------------------------------
(7)Internet信息服务(IIS)管理器的修改
1)网站》属性》主目录》配置》添加可执行文件=C:\WINDOWS\system32\inetsrv\fcgiext.dll。扩展名= .php。动作》限制为=GET,HEAD,POST。

win7 IIS7就是“处理程序映射”,添加模块映射:请求路径:*.php,模块:FastCgiModule,可执行文件: "C:\[Path to your PHP installation]\php-cgi.exe",名称:PHP via FastCGI 。确定后,此FastCGI就添加好了,可以在 顶层的FastCGI中对其有关参数进行设置,参数可以参考第5步。
2)网站》属性》文档》添加默认内容=index.php。win7 IIS7就是添加默认文档index.php。这里全部配置好了,一定要把IIS服务重启一下。
(8)测试(一定要重启IIS服务)最后用文本写一段测试代码:
----------------------------
<?phpphpinfo();>  
---------------------------
保存为index.php,名字随便取只要后缀是.php就可以。把index.php放到文档根下,然后在浏览器中输入http://127.0.0.1/index.php或http://localhost/index.php就可以得到返回的信息了。
注意:没测试成功的请不要进行以下操作  
(9)windows系统下,PHP5.3以上的版本已经不支持mssql扩展,所以如果你需要和sql server通信需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx自行下载微软提供的The SQL Server Driver for PHP,文件名SQLSRV20.EXE(2.0版是给SQL Server 2000/2005/2008用的,如果是SQL Server 2012,则下载SQLSRV30.EXE)。
下载后这个exe可以用WinRAR解压缩,将所有的(其实只需要对应的).dll文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:
注意:其实没有必要拷贝所有,只要拷贝你要用的就可以了。一般的vc6用于apache(经过试验发现Apache 2.2.22也是VC9编译的,所以也用VC9版本的),而vc9用于IIS,只要拷贝对应的两个文件再PHP.ini中添加一下就可以了。 至于ts和nts是线程安全和非线程安全,这个只要根据php目录下的php5ts.dll或php5nts.dll来选择。另外注意PHP的版本,我们是5.3的。
------------------------------------------------------------------------
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_53_nts_vc9.dll
[PHP_SQLSRV]
extension=php_sqlsrv_53_nts_vc9.dll
-------------------------------------------------------------------------
(10)如果你没有安装Microsoft SQL Server 2008 R2 Native Client,必须去http://msdn.microsoft.com/en-us/library/cc296170(SQL.90).aspx下载安装,因为微软的这个扩展包需要这个支持。
(11)写一个测试连接SQL Server的脚本,放到文档根下,运行后测试。如:
------------------------------------------
<?php
 
$serverName = "(local)";
$connectionInfo = array("UID" => "***", "PWD" => "******", "Database" => "****");
 
$conn = sqlsrv_connect($serverName, $connectionInfo);
 
if($conn){
  echo "MSSQL Server Connection established.<br />";
}else{
  echo "Connection failed!<br />";
  die(print_r(sqlsrv_errors(), true));
}
 
if($conn){
 // $query = sqlsrv_query($conn, "select top 100 * from tbl_users ");
 $query = sqlsrv_query($conn, "select top 100 * from tbl_1213二实验安排总");
  if($query == false){
    echo "Error in query prepareation/execution.\n";
    die(print_r(sqlsrv_errors(), true));
  }
  while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC)){
   // echo $row['id']. "----" .$row['name'] ."<br />";
     foreach($row as $item){
        echo $item;
     }
  }
  sqlsrv_close($conn);
}
 
?>
----------------------------------------------------------------------------

 结合WAMP 、CakePHP的使用:


首先同样确保安装好了SQL Server和Microsoft SQL Server 2008 R2 Native Client,准备好了The SQL Server Driver for PHP,文件名SQLSRV20.EXE(2.0版是给SQL Server 2000/2005/2008用的,如果是SQL Server 2012,则下载SQLSRV30.EXE)。
下载CakePHP并解压到D:\sjg\cakephp-2.3.5
下载WampServer 32位版(PHP 5.3,Apache 2.2.22)并安装,我们是D:\sjg\wamp

注意,试验中WampServer的Apache似乎不能与Windows 2003很好兼容(也许是阿里云主机的win2003的缘故),所以,我们独立下载Apache(httpd 2.2.22),重命名原来的Apache目录为~apache2.2.22,把下载的独立Apache安装到原来的Apache目录(即目录名用apache2.2.22)。用httpd.exe -k install -n wampapache命令安装Apache服务(名字用wampserver,和wamp中命名一致方便管理)。


为了避免和IIS的80端口冲突,我们把apache的配置中的监听端口修改为Listen 8077,文档根指向CakePHP文档根DocumentRoot "D:\sjg\cakephp-2.3.5\app\webroot",加载PHP模块LoadModule php5_module "D:/sjg/wamp/bin/php/php5.3.13/php5apache2_2.dll"


php配置修改。必须注意,wamp中,apache用的php的配置是用apache目录下的php.ini,修改配置必须针对这个ini文件。所以,把老的~apache2.2.22目录下的php.ini复制到apache2.2.22目录下,同时复制php5nsapi.dll和php5ts.dll 。添加对SQL Server驱动支持和IIS情况一样,在ext目录放上两个文件,php.ini添加对应配置。
CakePHP的数据库配置:当使用SQL Server时,CakePHP数据库配置为
----------------------------------------------------
    public $default = array(
        'datasource' => 'Database/Sqlserver',
        'persistent' => false,
        'host' => '(local)',
        'login' => '***',
        'password' => '***',
        'database' => '*****',
        'prefix' => '',
        //'encoding' => 'utf8',
    );
----------------------------------------------------------
似乎数据库配置对应cakephp-2.3.5\lib\Cake\Model\Datasource\Database目录下的文件名

(8)测试CakePHP,能连接数据库了,就表示工作正常了。


----------------------------------------------------------------------------------------------------

IIS+Yii框架的构建:

IIS支持php的配置参看前面的说明。下载Yii 1.1.13,解压到 D:\sjg\yii-1.1.13.e9e4a0,运行命令提示符cmd.exe并切换工作目录到D:\sjg\yii-1.1.13.e9e4a0,运行yiic.bat创建Yii的命令行环境(需要确保php.exe已经在环境变量PATH中了),然后用 yiic  webapp  d:\sjg\myproject,创建web app

在IIS配置,把网站根目录配置到d:\sjg\myproject或者建立一个虚拟目录myproject指向d:\sjg\myproject,同时配置网站根或者虚拟目录对.php文件的解析(参看前面)

在客户浏览器输入http://xxxxxxxx.com/myproject/,发现浏览器匿名客户进程需要对一些目录有写的权限,在以下目录,添加IUSER_*****用户的写入修改权限:

/protected/runtime     (这个目录下面会生成应用的运行日志)

/assets

再次试验,发现基本的系统可以工作了




你可能感兴趣的:(PHP,yii,sqlserver,IIS,cakephp)