首页 » windows » IIS上配置php服务器

IIS上配置php服务器

 
文章目录

iis上配置服务器,如果报500,可以把php目录添加到path,然后cmd,查看php -v会不会报什么错,一般第一次的话,报500,说明缺少什么文件,所以 php -v会提示你少什么文件,

缺少这个msvcr110.dll,就去以下路径下载安装 ,下载对应版本就好了。

 

如果不是以上原因,访问的时候报500,可以按以下设置:

1、前提是按以下已经设置了,但访问还是报500

2、设置网站目录权限为users为所有权限,everyone/everybody为读写权限 

3、设置php.ini的日志如下,打印日志,方便查看问题原因,500一般都是php的问题。

display_errors=On
error_log="C:\windows\Temp\php-5.x.yy_errors.log"
error_reporting = E_ALL
fastcgi.logging = 0
html_errors=On
log_errors = On

 

https://www.microsoft.com/zh-cn/download/details.aspx?id=30679

以下参考:https://blog.csdn.net/wzj0808/article/details/54177067

—————————————————————————————————————

 

1、下载php解释器

地址为http://windows.php.net/download/

版本有两种,线程安全和非线程安全,线程安全是给apache用的,非线程安全是给iis用的,我们要配的是iis,所以下载非线程安全的,x86和x64看自己的机器是什么系统选择对应的版本下载就行了。

2、安装php解释器

php可以说不用安装的,只要将文件解压到c:\php(一般不放在系统盘,那么就放E:\PHP)文件夹,就算安装完成了。

3、配置php.ini

拷贝php.ini-development,改名为php.ini,并进行如下修改:

<1>扩展插件的路径
  1. ; Directory in which the loadable extensions (modules) reside.
  2. ; http://php.net/extension-dir
  3. ; extension_dir = “./”
  4. ; On windows:
  5. extension_dir = “c:\PHP\ext”

修改最后一行,填入自己真实的PHP解释器地址,以及后面跟着ext文件夹,这个里面放的都是插件

<2>设置要引入哪些插件
  1. ; Windows Extensions
  2. ; Note that ODBC support is built in, so no dll is needed for it.
  3. ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
  4. ; extension folders as well as the separate PECL DLL download (PHP 5).
  5. ; Be sure to appropriately set the extension_dir directive.
  6. ;
  7. ;extension=php_bz2.dll
  8. ;extension=php_curl.dll
  9. ;extension=php_fileinfo.dll
  10. ;extension=php_gd2.dll
  11. ;extension=php_gettext.dll
  12. ;extension=php_gmp.dll
  13. ;extension=php_intl.dll
  14. ;extension=php_imap.dll
  15. ;extension=php_interbase.dll
  16. ;extension=php_ldap.dll
  17. extension=php_mbstring.dll
  18. ;extension=php_exif.dll ; Must be after mbstring as it depends on it
  19. extension=php_mysql.dll
  20. extension=php_mysqli.dll
  21. ;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
  22. ;extension=php_openssl.dll
  23. ;extension=php_pdo_firebird.dll
  24. ;extension=php_pdo_mysql.dll
  25. ;extension=php_pdo_oci.dll
  26. ;extension=php_pdo_odbc.dll
  27. ;extension=php_pdo_pgsql.dll
  28. ;extension=php_pdo_sqlite.dll
  29. ;extension=php_pgsql.dll
  30. ;extension=php_shmop.dll

要引入的插件,只要把前面的分号去掉就可以了,我这里只引入了mysql、mysqli、mbstring。

<3>设置时区
  1. [Date]
  2. ; Defines the default timezone used by the date functions
  3. ; http://php.net/date.timezone
  4. date.timezone = Asia/Shanghai
<4>支持短标签
  1. ; This directive determines whether or not PHP will recognize code between
  2. ; <? and ?> tags as PHP source which should be processed as such. It is
  3. ; generally recommended that <?php and ?> should be used and that this feature
  4. ; should be disabled, as enabling it may result in issues when generating XML
  5. ; documents, however this remains supported for backward compatibility reasons.
  6. ; Note that this directive does not control the <?= shorthand tag, which can be
  7. ; used regardless of this directive.
  8. ; Default Value: On
  9. ; Development Value: Off
  10. ; Production Value: Off
  11. ; http://php.net/short-open-tag
  12. short_open_tag = On
<5>启用fastcgi
  1. ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
  2. ; security tokens of the calling client. This allows IIS to define the
  3. ; security context that the request runs under. mod_fastcgi under Apache
  4. ; does not currently support this feature (03/17/2002)
  5. ; Set to 1 if running under IIS. Default is zero.
  6. ; http://php.net/fastcgi.impersonate
  7. fastcgi.impersonate = 1
<6>cgi相关设置pathinfo
  1. ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s
  2. ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
  3. ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
  4. ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
  5. ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
  6. ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
  7. ; http://php.net/cgi.fix-pathinfo
  8. cgi.fix_pathinfo=1
<7>cgi相关设置redirect
  1. ; cgi.force_redirect is necessary to provide security running PHP as a CGI under
  2. ; most web servers. Left undefined, PHP turns this on by default. You can
  3. ; turn it off here AT YOUR OWN RISK
  4. ; **You CAN safely turn this off for IIS, in fact, you MUST.**
  5. ; http://php.net/cgi.force-redirect
  6. cgi.force_redirect = 0

 

<8>session存储路径
  1. ; where MODE is the octal representation of the mode. Note that this
  2. ; does not overwrite the process’s umask.
  3. ; http://php.net/session.save-path
  4. session.save_path = “d:\server\web\session”
<9>数据库

mysql.default_port = 3306
mysql.default_host = localhost
mysql.default_user = root

<10>输出缓存
  1. ; Note: This directive is hardcoded to Off for the CLI SAPI
  2. ; Default Value: Off
  3. ; Development Value: 4096
  4. ; Production Value: 4096
  5. ; http://php.net/output-buffering
  6. output_buffering = On//这里应该是填一个值,比如4096
<11>限定上传文件体积最大值
upload_max_filesize = 100M

4、将php.ini放到系统目录

配置完成之后,将php.ini拷贝一份放到c:\windows下。注意,如果是win7使用的iis7已经不需要这么做了。

5、配置IIS(IIS默认已经安装完毕,此处不再介绍如何安装IIS)

<1>处理程序映射(HandlerMappings)

都点击确定之后,会弹出一个警告对话框,点击“是”就可以了。

<2>ISAPI和CGI限制

<3>添加站点

在某个路径下创建一个文件夹,在IIS中添加站点,将此文件夹作为站点添加进去

注意,添加站点之后,要对其添加everyone用户,给予全部权限。

<4>设置站点默认页面

<5>添加默认页面

在网站的根目录创建一个名为index.php的文件,在内容中输入

<?php phpinfo(); ?>

 

<6>打开网站

配置hosts指向,将刚才配置的网站域名指向127.0.0.1,像这样:

127.0.0.1 yourdomain.com

浏览器打开yourdomain.com,可以看到成功解析了index.php文件,显示的是php的相关信息。

6、集成CodeIgniter框架

<1>下载CodeIgniter

下载地址:http://codeigniter.org.cn/

<2>整合CodeIgniter

解压之后,打开CodeIgniter文件夹,将里面的内容复制粘贴到站点的根目录,会提示是否替换掉原来的index.php文件,选择”是”,这样框架就算整合完毕了

打开浏览器访问主页,看到的是CodeIgniter框架的提示信息!

<3>添加favicon图标

每个page都会自动去加载favicon图标,因此应该在index.php目录下放置favicon.ico文件,不然都会报错,显示找不到图标。

7、有可能出现的问题

<1>丢失 MSVCR110.dll

第一次访问php网站可能会出现“无法启动此程序,因为计算机中丢失 MSVCR110.dll”的错误,应该这样解决:

-打开微软下载页面:http://www.microsoft.com/zh-CN/download/details.aspx?id=30679

-点击下载

-选择相应的版本,64就选64,32就选32

-点击下载

-安装

完成之后网站就可以正常访问了。

<2>唯一密钥属性“value”设置…无法添加类型为add

在web.config-files节点改为:

<files>
<clear />
<add value=”index.php” />
<add value=”index.html” />
</files>

<3>服务器部署中常见问题

服务器碰见了一些问题 ,一个就是上面说的value属性,value设置好之后就是cgi问题,没有权限之类的,把php引擎的文件夹设置everyone之后,发现cgi意外退出,直接打开cgi,发现原来是丢失 MSVCR110.dll,把丢失 MSVCR110.dll装上之后好了。

注意,因为把system和application文件夹移到web目录以外,但是程序在访问的时候仍然会访问到这两个文件夹,因此也要把这两个文件夹添加everyone。

<4>升级php7遇到的问题

升级php7传说中性能可以提升很多倍。php5竟然是10多年前的产物…

配置php.ini没碰到什么问题,主要一个是mysql.dll的选项没了,配置数据库的port、username等都不是mysql而是mysqli,这些我就没弄了,在CI里面会有配置,应该没什么大问题。

开始运行,cgi异常。直接打开cgi发现报错:丢失VCRUNTIME140.dll。这个错误是因为最新版的php7(php7.1)需要安装Visual C++Redistributable 2015。

下载地址:https://www.microsoft.com/en-US/download/details.aspx?id=48145,下载安装就好了。

<5>最便捷的解决方案

今天调试刚买的服务器,发现无论怎么弄都会报FastCgi错误,错误代码是***0005,即5号代码的错误。怎么弄都不行,一度怀疑此云服务器的FastCgiModule被阉割了,不能正常运行。

直到找到了这样一个解决方案,https://php.iis.net,可以在线安装。踏破铁鞋无觅处,得来全不费功夫。

8、在本地配置https

本地测试为了可以跟线上一致,以https来测试,必须要配置ssl证书。

 

原文链接:IIS上配置php服务器,转载请注明来源!

0