PHP作为最广泛使用的服务端脚本语言之一,其安装与环境配置是开发Web应用的第一步。不同操作系统下的安装逻辑差异明显,但核心都围绕解释器本体、配置文件与Web服务器的衔接展开。下面分别说明Windows与Linux两种主流场景下的做法。

Windows系统下的PHP安装与配置
在Windows环境中,不建议直接使用老旧的安装包,而是从PHP官网下载对应版本的线程安全(TS)或非线程安全(NTS)压缩包。NTS版本配合FastCGI模式运行效率更高,TS版本则适合搭配Apache的mod_php模块。下载完成后,将其解压到固定目录,例如 C:php,这个路径不要包含中文或空格,以免后续命令行解析出错。
接下来需要把PHP目录加入系统环境变量。右键“此电脑”进入属性,打开高级系统设置中的环境变量,在Path中新增一条 C:php。配置好后打开CMD输入以下命令验证:
php -v
如果返回PHP版本信息,说明CLI模式已可用。若提示“不是内部或外部命令”,通常是Path未生效或窗口未重启。此时应重新打开终端再试,而非反复修改配置。
php.ini基础配置
PHP压缩包中默认附带 php.ini-development 与 php.ini-production 两个模板,前者适合开发调试,后者偏向性能与安全。复制一份重命名为 php.ini 并放在PHP根目录。打开后需修改几个常用项:将 extension_dir 设为 "ext",取消 extension=mysqli、extension=openssl 等前方分号以启用扩展。
另外,开发环境建议设置 display_errors = On 与 error_reporting = E_ALL,这样页面会直接显示报错,便于排查。时区也要显式声明,例如 date.timezone = Asia/Shanghai,否则时间函数会报警告。以下是一段最小可用配置示例:
extension_dir = "ext" extension=mysqli extension=openssl display_errors = On error_reporting = E_ALL date.timezone = Asia/Shanghai upload_max_filesize = 20M post_max_size = 20M
Linux系统下的PHP安装与配置
在Linux发行版中,使用包管理器安装最为稳妥。以Ubuntu为例,通过apt可一次性装上PHP及常用模块。相比Windows手动解压,Linux方式能自动处理依赖并注册服务,降低路径配置负担。
执行下列命令即可安装PHP命令行版本与Apache模块:
sudo apt update sudo apt install php libapache2-mod-php php-mysqli
安装结束之后,可用 php -v 检查CLI,访问Apache默认站点目录 /var/www/html 放入 info.php 验证Web模式。若页面显示PHP信息页,说明模块已加载。注意Apache需重启才能识别新模块:
sudo systemctl restart apache2
使用PHP-FPM配合Nginx
若采用Nginx而非Apache,则应安装PHP-FPM以获得更好的并发表现。FPM以独立进程池运行,通过Unix socket与Nginx通信,比模块方式更灵活。安装命令如下:
sudo apt install php-fpm
Nginx站点配置需将请求转发至FPM监听地址。默认情况下PHP-FPM监听 /run/php/php-fpm.sock,在Nginx的server段中加入以下片段即可:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
这种方式把Web服务器与解释器解耦,升级PHP时只需切换FPM版本而不影响Nginx。但也要求运维明确两个服务的运行状态,任一方异常都会导致502错误。
配置文件位置与常见误区
很多初学者改了配置文件却不见效,是因为没找对加载路径。CLI与Web模式可能读取不同的 php.ini。在Windows中,Web服务所用的.ini通常由Apache或Nginx对应的PHP模块指定;Linux中可用 php --ini 查看CLI路径,而Web模式要建一个 info.php 打印 phpinfo() 来确认。
另一个常见误区是混淆函数调用与标签。例如 phpinfo() 是函数调用,不是 <phpinfo> 标签;在正文描述HTML表单元素时应写成 <input> 而非真实标签,避免被解析。以下代码演示了如何安全地输出配置路径:
<?php // 输出当前PHP配置文件路径 echo '当前加载的php.ini位置:' . php_ini_loaded_file(); ?>
当页面显示路径后,再去对应位置修改才是有效操作。切忌凭感觉在多个ini之间来回复制,那只会让环境更加混乱。
验证与排错建议
配置收尾阶段,建议写一个简单的测试脚本,既验证语法也验证扩展。比如连接数据库前先确认mysqli是否真正加载,而不是只看文件里取消注释。
<?php
if (extension_loaded('mysqli')) {
echo 'mysqli扩展已启用';
} else {
echo 'mysqli未启用,请检查php.ini';
}
?>
若Web访问返回空白页,优先看错误日志而非直接改代码。Windows下日志路径在php.ini的 error_log 项;Linux通常在 /var/log/php-fpm.log 或Apache的 error.log。把显示错误打开配合日志,基本能定位九成以上的安装配置问题。