动态 版块 发帖 消息 我的
Loading...
HadSky
支持原创软件,共创美好明天!
qq446825518
创始人Lv4   
IIS服务器部署多个PHP版本的各个教程步骤和一些常用的注意事项。     

1. extension_dir(最重要)

必须改成绝对路径:

extension_dir = "C:\php-8.5.6\ext"

不要用:

extension_dir = "ext"

因为 IIS/FastCGI 有时候工作目录会变化。


2. 时区

不改的话日志时间会错。

date.timezone = Asia/Shanghai

或者:

date.timezone = Asia/Tokyo


3. 上传文件大小

默认只有 2M。

一般改:

upload_max_filesize = 100M
post_max_size = 100M

如果经常导入 Excel:

upload_max_filesize = 500M
post_max_size = 500M


4. 执行时间

导入大 Excel、导出 CSV 很有用。

max_execution_time = 300
max_input_time = 300

5分钟。


5. 内存限制

默认太小。

memory_limit = 512M

大型导入:

memory_limit = 1024M


6. Session目录

创建目录:

C:\php-8.5.6\sessions

配置:

session.save_path = "C:\php-8.5.6\sessions"

否则有些服务器会话失效。


7. 错误日志

生产环境推荐:

display_errors = Off

log_errors = On

error_log = "C:\php-8.5.6\logs\php_errors.log"

创建目录:

C:\php-8.5.6\logs


8. OPCache(强烈推荐)

PHP性能提升非常明显。

确认开启:

zend_extension=opcache

一般PHP8已经默认有:

[opcache]

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60


9. 必开的扩展

数据库:

extension=pdo_mysql
extension=mysqli

字符串:

extension=mbstring

网络:

extension=curl

HTTPS:

extension=openssl

图片:

extension=gd

压缩:

extension=zip

XML:

extension=xml
extension=xmlreader
extension=xmlwriter
extension=dom
extension=simplexml


10. 查看是否加载成功

新建:

<?php
phpinfo();

确认有:

PDO
pdo_mysql
mysqli
curl
openssl
mbstring
gd
zip
Zend OPcache


我的 IIS + PHP 标准配置

这是我觉得比较适合你做库存系统、盘点系统、导入Excel系统的配置:

date.timezone = Asia/Shanghai

memory_limit = 512M

max_execution_time = 300
max_input_time = 300

upload_max_filesize = 200M
post_max_size = 200M

extension_dir = "C:\php-8.5.6\ext"

session.save_path = "C:\php-8.5.6\sessions"

display_errors = Off

log_errors = On
error_log = "C:\php-8.5.6\logs\php_errors.log"

zend_extension=opcache

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60

扩展:

extension=pdo_mysql
extension=mysqli
extension=mbstring
extension=curl
extension=openssl
extension=gd
extension=zip


每次升级 PHP 后必查

访问一个 check.php

<?php

echo "PHP: ".PHP_VERSION."<br>";
echo "INI: ".php_ini_loaded_file()."<br>";
echo "EXT: ".ini_get('extension_dir')."<br>";

echo "<pre>";
print_r(PDO::getAvailableDrivers());
echo "</pre>";

正常应该看到:

PHP: 8.5.6
INI: C:\php-8.5.6\php.ini
EXT: C:\php-8.5.6\ext

Array
(
[0] => mysql
)

只要这几个正常,基本上数据库、上传、Excel导入、缓存、登录会话这些功能都能正常运行。


#############################

下面是涉及到上传目录的问题


上传文件实际上涉及 两个路径

1. PHP临时上传目录(upload_tmp_dir)

这是浏览器上传时先存放的地方。

例如:

upload_tmp_dir = "C:\php-8.5.6\tmp"

先创建目录:

C:\php-8.5.6\tmp

然后给 IIS 用户权限:

IIS_IUSRS
读取
写入
修改

如果不设置,PHP会使用系统临时目录:

C:\Windows\Temp

有时候权限不够会出现:

上传失败
move_uploaded_file失败


2. 网站最终保存目录

这个不是 php.ini 配置的。

是你的 PHP 代码决定的。

例如:

move_uploaded_file(
$_FILES['file']['tmp_name'],
__DIR__.'/uploads/test.xlsx'
);

保存到:

网站目录
├─ uploads
│ └─ test.xlsx


推荐目录结构

例如你的网站:

D:\wwwroot\inventory\

建议:

D:\wwwroot\inventory\
├─ uploads\
│ ├─ excel\
│ ├─ images\
│ ├─ attachments\

├─ logs\
├─ cache\
├─ index.php


php.ini推荐增加

upload_tmp_dir = "C:\php-8.5.6\tmp"

upload_max_filesize = 200M

post_max_size = 200M

max_file_uploads = 100


检查是否生效

新建:

<?php

echo "upload_tmp_dir = ".ini_get('upload_tmp_dir')."<br>";

echo "upload_max_filesize = ".ini_get('upload_max_filesize')."<br>";

echo "post_max_size = ".ini_get('post_max_size')."<br>";

应该显示:

upload_tmp_dir = C:\php-8.5.6\tmp
upload_max_filesize = 200M
post_max_size = 200M


IIS还要检查一个地方

如果上传大文件(Excel、压缩包等),除了 PHP:

upload_max_filesize = 200M
post_max_size = 200M

IIS 默认也有限制。

打开:

IIS
→ 网站
→ Request Filtering
→ Edit Feature Settings

把:

Maximum allowed content length

改成:

209715200

表示:

200MB

否则会直接报:

HTTP Error 404.13
Content Length Too Large


对于你开发的库存盘点系统、Excel导入系统,我一般会配置:

extension_dir = "C:\php-8.5.6\ext"

upload_tmp_dir = "C:\php-8.5.6\tmp"

session.save_path = "C:\php-8.5.6\sessions"

error_log = "C:\php-8.5.6\logs\php_errors.log"

upload_max_filesize = 200M
post_max_size = 200M

memory_limit = 512M

max_execution_time = 300

然后提前创建:

C:\php-8.5.6\tmp
C:\php-8.5.6\sessions
C:\php-8.5.6\logs

这样后续导入 Excel、上传附件、生成报表基本不会因为 PHP 环境配置出问题。



#############################

通用版本的php.in的一些注释

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 通用 IIS + PHP 8.x 推荐配置
; 适用于:
; PHP + MySQL
; ERP
; WMS仓库系统
; CRM
; OA
; 盘点系统
; Word/Excel导入导出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[PHP]

; 时区
date.timezone = Asia/Shanghai

; 内存
memory_limit = 512M

; 执行时间
max_execution_time = 300
max_input_time = 300

; 上传
file_uploads = On
upload_max_filesize = 200M
post_max_size = 200M
max_file_uploads = 100

; 临时上传目录
upload_tmp_dir = "C:\PHP\tmp"

; Session目录
session.save_path = "C:\PHP\sessions"
session.gc_maxlifetime = 86400

; 扩展目录
extension_dir = "C:\PHP\ext"

; 错误处理
display_errors = Off
display_startup_errors = Off

log_errors = On
error_log = "C:\PHP\logs\php_errors.log"

; 安全
expose_php = Off

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 常用扩展
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

extension=pdo_mysql
extension=mysqli

extension=mbstring

extension=curl

extension=openssl

extension=gd

extension=zip

extension=xml
extension=xmlreader
extension=xmlwriter
extension=dom
extension=simplexml

extension=fileinfo

extension=bcmath

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; OPCache
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

zend_extension=opcache

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 输出缓冲
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

output_buffering = 4096

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 字符集
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

default_charset = "UTF-8"




 0  已被阅读了12次  楼主 2026-05-30 11:15:39
回复列表

回复:IIS服务器部署多个PHP版本的各个教程步骤和一些常用的注意事项。

guest
登录之后更精彩~
Powered by HadSky 7.1.1
© 2015-2026 PuYueTian
您的IP:216.73.216.7,2026-06-02 01:15:02,Processed in 0.00957 second(s).
Powered by HadSky
© 2012 - 2022 壹素天财 版权所有