游乐游手机版
首页/编程语言/文章详情

PHP常用代码片段与实用工具资源收集整理

时间:2026-05-07 09:27
IIS+php 不支持mysql的一个问题以及解决 在Windows Server 2003环境下搭建IIS+PHP+MySQL这套经典组合,不少朋友都遇到过一个看似棘手的问题:环境配置好了,PHP也能解析了,但偏偏就是连不上MySQL。折腾了好一阵子,最后发现问题往往出在一个容易被忽略的细节上:忘

IIS+php 不支持mysql的一个问题以及解决

在Windows Server 2003环境下搭建IIS+PHP+MySQL这套经典组合,不少朋友都遇到过一个看似棘手的问题:环境配置好了,PHP也能解析了,但偏偏就是连不上MySQL。折腾了好一阵子,最后发现问题往往出在一个容易被忽略的细节上:忘记将`libmysql.dll`复制到系统目录。下面就来梳理一下完整的配置流程,并重点指出这个关键步骤。

第一步:解开PHP压缩包

将PHP的压缩包解压,建议放在一个简单的路径下,例如`C:\PHP`。

第二步:配置php.ini文件

首先,把`C:\PHP`目录下的`php.ini-dist`文件复制到`C:\WINDOWS`目录下,并重命名为`php.ini`。

接下来,编辑这个`C:\windows\php.ini`文件,需要修改几个地方:

1. 找到`extension_dir`这一行,将其修改为你的PHP扩展目录的实际路径,例如:

; Directory in which the loadable extensions (modules) reside
extension_dir = "C:\PHP\ext"

2. 找到下面这几个扩展模块,将每一行前面的分号`;`去掉(以PHP 5.1.6为例,默认是不支持MySQL的,所以这一步必须做):

extension=php_mysql.dll
extension=php_mbstring.dll
extension=php_gd2.dll

关键一步来了: 将`C:\PHP`目录下的`libmysql.dll`文件,复制到`C:\WINDOWS`或`C:\WINDOWS\system32`目录下。缺少这一步,PHP将无法正常调用MySQL客户端库。

第三步:复制运行时文件

把`C:\php\php5ts.dll`这个文件复制到`C:\windows\system32`目录下。

第四步:配置IIS 6.0

打开控制面板 -> 管理工具 -> Internet服务管理器(IIS管理器)。在左侧树形目录中,点选“Web服务扩展”。在右侧窗口点击“添加一个新的Web服务扩展”。

在弹出的对话框中: - 扩展名填写“PHP”。 - 点击“添加”按钮,在文件路径处填入`C:\PHP\php5isapi.dll`并确定。 - 最后,在Web服务扩展列表中选中新添加的“PHP”,并点击“允许”按钮。

Windows下Nginx的启动、停止等命令

在Windows环境下使用Nginx,掌握几个基本的命令行操作是必不可少的,比如启动、停止服务,或者重新加载配置。下面就来简单介绍一下这些常用命令。

1、启动:

C:\server\nginx-1.0.2>start nginx

或者

C:\server\nginx-1.0.2>nginx.exe

这里有个小建议:通常使用第一种`start nginx`命令,因为它会在后台启动服务。如果直接运行`nginx.exe`,当前的命令行窗口会一直处于执行状态,无法进行其他操作。

2、停止:

C:\server\nginx-1.0.2>nginx.exe -s stop

或者

C:\server\nginx-1.0.2>nginx.exe -s quit

这两者略有区别:`stop`是快速停止Nginx,可能不会保存相关信息;而`quit`则是完整有序地停止Nginx,并会保存好相关信息。

3、重新载入Nginx:

C:\server\nginx-1.0.2>nginx.exe -s reload

当你修改了Nginx的配置文件(如`nginx.conf`)后,不需要重启服务,使用这个命令就能让新配置生效。

4、重新打开日志文件:

C:\server\nginx-1.0.2>nginx.exe -s reopen

这个命令常用于日志切割后,通知Nginx重新打开日志文件进行写入。

5、查看Nginx版本:

C:\server\nginx-1.0.2>nginx -v

或者

C:\server\nginx-1.0.2>nginx -V

注意,`-v`参数只是简单地显示版本号,而`-V`(大写)则会显示更详细的版本信息以及编译时的配置参数。

6、测试或载入指定配置文件:

在修改配置文件后,正式应用前,最好先测试一下语法是否正确:

C:\server\nginx-1.0.2>nginx.exe -t -c conf/default.conf

如果测试成功,会显示“syntax is ok”和“test is successful”。如果需要使用一个非默认的配置文件来启动Nginx,可以这样:

C:\server\nginx-1.0.2>start nginx.exe -c conf/default.conf

Windows下nginx定时分割日志

Nginx的访问日志对于分析网站流量、进行IP/PV统计来说至关重要。然而,Windows版本的Nginx和Linux版一样,默认并不支持按日期自动分割日志。在Linux下,我们通常借助Shell脚本实现,那么在Windows下该怎么办呢?其实,写一个简单的批处理脚本,再结合系统的任务计划,就能轻松搞定。

假设你的日志源文件路径是`d:\data1\logs\www.log`,希望分割后的日志存放到`D:\data1\logs2\`目录下。

新建一个文本文件,将后缀改为`.bat`,内容如下:

taskkill /F /IM nginx.exe
set "cmdstr=move D:\data1\logs\www.log D:\data1\logs2\access_ydgdw_211.138.195.36_log.%date:~0,4%-%date:~5,2%-%date:~8,2%.log
call %cmdstr%"
start nginx

这个批处理脚本依次做了三件事: 1. 强制结束系统中正在运行的`nginx.exe`进程。 2. 将原日志文件移动到新目录,并按照`access_ydgdw_211.138.195.36_log.年-月-日.log`的格式重命名。 3. 重新启动Nginx服务。

将这个批处理文件保存到Nginx的根目录下。然后,打开Windows的“任务计划程序”,添加一个每天(例如凌晨2点)执行一次此脚本的计划任务即可。

需要说明的是,经过测试,在Windows平台下,必须在Nginx服务停止后才能移动或重命名其日志文件,这算是一个小小的限制。不过好在整个停止-备份-重启的过程非常快,通常只需1到2秒,设置在访问量最低的凌晨执行,对服务的影响微乎其微。

关于PHP--->VC9和VC6以及Thread Safe和Non Thread Safe版本选择的问题

访问PHP官网下载Windows版本时,面对VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe这四个选项,新手难免会感到困惑。别急,弄清楚下面两个维度的区别,你就能做出正确选择。

一、如何选择PHP5.3的VC9版本和VC6版本

这取决于你使用的Web服务器: - VC6版本:是用老牌的Visual Studio 6编译器编译的。如果你的Web服务器是Apache,那么应该选择这个版本。 - VC9版本:是用Visual Studio 2008编译器编译的。如果你的Web服务器是IIS,那么请选择这个版本。

二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本

这取决于PHP的运行方式: - Thread Safe (线程安全):在执行时会进行线程安全检查,以防止在多线程环境(如IIS的ISAPI模式)下因创建过多线程而耗尽系统资源。 - Non Thread Safe (非线程安全):在执行时不进行线程安全检查,通常在单线程模式下运行效率更高。

再看PHP的两种主要执行方式: - ISAPI方式:以DLL动态库形式运行,能被多个请求复用,存在于多线程环境中。因此,如果采用ISAPI方式运行PHP(常见于IIS),务必选择Thread Safe版本。 - FastCGI方式:每个PHP进程以单一线程运行,不存在线程安全问题。因此,如果采用FastCGI方式运行PHP(如Nginx+PHP-FPM,或IIS配置为FastCGI模式),选择Non Thread Safe版本能获得更好的性能。

最后提个醒,PHP官方通常不建议在生产环境中使用Non Thread Safe版本。因此,对于大多数通用场景,尤其是初学者或不明确运行模式时,选择Thread Safe版本是更稳妥的做法。

php调试

安装XDebug

Eclipse PDT本身不提供调试器,需要额外配置。通常有两个选择:Zend Debugger或XDebug。考虑到前者依赖于商业产品,这里我们选择完全免费的XDebug。

安装步骤:

1. 将下载到的XDebug模块文件(例如`php_xdebug-2.0.3-5.2.5.dll`)放入PHP的扩展目录(例如`C:\php5\ext`)。

2. 用文本编辑器打开PHP的配置文件`php.ini`(其路径可在Apache配置中指定,通常位于`C:\Windows`目录下),在文件末尾添加以下配置:

[XDebug]
; 请根据你下载的DLL文件名修改下面的路径
zend_extension_ts="C:/php5/ext/php_xdebug-2.0.3-5.2.5.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1 ; 如果是远程调试,请填写客户端IP
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="C:/php5/tmp"

请务必根据你的实际安装路径,修改`zend_extension_ts`和`xdebug.profiler_output_dir`两项的值。

3. 重要提示: 如果你之前安装过Zend Optimizer,必须将其相关配置行注释掉(每行前面加上分号`;`),因为Zend Optimizer与XDebug不兼容。注释后的效果类似这样:

[Zend]
; zend_extension_ts = "C:xamppphpzendOptimizerlibZendExtensionManager.dll"
; zend_extension_manager.optimizer_ts = "C:xamppphpzendOptimizerlibOptimizer"
; zend_optimizer.enable_loader = 0
; zend_optimizer.optimization_level=15
;zend_optimizer.license_path =

4. 保存`php.ini`文件,并重启你的Apache服务器,使配置生效。

5. 最后,创建一个简单的PHP页面,内容为``,在浏览器中访问。如果配置成功,你应该能在输出的页面信息中找到XDebug相关的模块信息,这标志着调试环境已经准备就绪。

来源:https://blog.csdn.net/weixin_32864391/article/details/115235713
上一篇Ubuntu系统下使用Golang编译项目的详细步骤 下一篇Ubuntu系统下Golang编译依赖的完整解决方案
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Java日期字符串格式化:指定样式转换教程
编程语言 · 2026-07-05

Java日期字符串格式化:指定样式转换教程

Java 日期字符串格式转换:从 "yyyy-MM-dd " 到 "dd-MM-yyyy " 并保留纳秒精度 日期格式转换是 Java 日常开发中非常常见的需求。然而,看似简单的操作一旦忽略了细节,就容易埋下隐患。本文主要介绍如何将类似 "2023-03-13 12:00:02 " 的字符串,转换为 "1

Java static方法优雅替换全局配置管理
编程语言 · 2026-07-05

Java static方法优雅替换全局配置管理

在Java项目中,“能否用static方法替代全局配置管理”几乎是每次技术讨论都会出现的话题。答案是:可以,但前提是掌握正确用法。static方法本身并非配置管理的替代品,它更像一个统一入口——将散布在各处的硬编码值集中管理,封装成一个受控、只读、可验证的配置访问点。 真正优雅的做法是:利用stat

Java抽象类约束子类行为实现标准规范
编程语言 · 2026-07-05

Java抽象类约束子类行为实现标准规范

在Java的世界里,抽象类(Abstract Class)是约束子类行为最经典的机制之一。它既不像接口那样仅做纯声明,也不像普通类那样提供完整实现——它处于两者之间,既是契约也是骨架。核心要点就是:在父类中使用abstract关键字声明抽象方法,编译器会自动检查,漏掉一个方法都无法通过编译。 抽象类

Java多线程环境下StringBuffer字符串拼接方法
编程语言 · 2026-07-05

Java多线程环境下StringBuffer字符串拼接方法

StringBuffer 的线程安全机制,实质上是在所有修改方法上添加了 synchronized 锁——例如 append、insert、delete 等操作,均受同一把 this 锁保护。同一时刻只允许一个线程对内部的 char[] 数组和 count 字段进行修改,从而保障数据一致性。但代价显

Java局部变量作用域冲突解决与实战指南
编程语言 · 2026-07-05

Java局部变量作用域冲突解决与实战指南

Ja va局部变量作用域冲突:本质是设计问题,靠工具不如靠思路 许多开发者遇到局部变量与成员变量同名时,第一反应可能是“编译器会自动处理吧?”——遗憾的是,Ja va编译器仅负责报告语法错误,并不会替你梳理业务逻辑。局部变量作用域冲突本质上属于逻辑边界设计问题,必须由开发者主动规划、显式隔离。核心方