Windows下ZIP安装PHP需解压至无中文/空格路径、复制修改php.ini、添加PATH;Linux/macOS编译用--prefix指定根目录;Homebrew不支持自定义路径但可软链;务必用php --ini和php -i验证实际加载的php.ini。
PHP 官方不提供 Windows 图形化安装器,直接下载 ZIP 包解压到任意路径即可运行,但必须手动配置环境变量和 php.ini。常见错误是解压后双击 php.exe 闪退,或执行 php -v 报“不是内部或外部命令”——本质是路径没加进系统 PATH,或缺少 php.ini。
php-8.3.6-Win32-vs16-x64.zip)D:\dev\php-8.3.6(路径中不要含中文、空格、特殊符号)php.ini-development 并重命名为 php.ini,编辑它:取消注释 extension_dir = "ext" 行,并确认该目录存在(即 D:\dev\php-8.3.6\ext)D:\dev\php-8.3.6 加入系统环境变量 PATH(需重启终端生效)php -v 和 php --ini,确认版本和配置文件路径正确源码编译是最可控的自定义路径方式,--prefix 决定所有文件的根目录,包括二进制、扩展、配置、文档等。误设会导致 php 找不到 php.ini 或扩展,报错如 Unable to load dynamic library 'mysqli'。
./configure --prefix=/opt/php-8.3.6 --with-openssl --with-curl(按需添加其他 --with- 选项)--prefix 必须是绝对路径,且当前用户需有写权限;不要设为 /usr/local 这类系统路径,除非你明确要覆盖系统 PHPmake && sudo make install 后,可执行文件在 /opt/php-8.3.6/bin/php,配置模板在 /opt/php-8.3.6/lib/php.ini
php.ini-production 到 /opt/php-8.3.6/lib/php.ini,并检查 extension_dir 是否指向 /opt/php-8.3.6/lib/php/extensions/no-debug-zts-20250831/
/opt/php-8.3.6/bin/php -c /opt/php-8.3.6/lib/php.ini -v,避免依赖默认查找逻辑Homebrew 默认把 PHP 装在 /opt/homebrew/Cellar/php@8.3/8.3.6,再软链到 /opt/homebrew/bin/php。它不支持 --prefix 自定义,强行改 brew 目录会破坏包管理。想“看起来”装在别处,只能靠符号链接 + 环境变量。
brew install php@8.3 安装(注意带版本号,否则装最新版)brew --prefix php@8.3 → 得到类似 /opt/homebrew
/Cellar/php@8.3/8.3.6
mkdir -p /usr/local/php-8.3.6 ln -sf /opt/homebrew/Cellar/php@8.3/8.3.6/bin/php /usr/local/php-8.3.6/bin/php ln -sf /opt/homebrew/Cellar/php@8.3/8.3.6/lib/php.ini /usr/local/php-8.3.6/lib/php.ini
/usr/local/php-8.3.6/bin 加入 PATH,优先级高于 Homebrew 的 bin 目录which php 应返回 /usr/local/php-8.3.6/bin/php,php --ini 显示配置路径是否匹配无论路径怎么设,php.ini 找不到或加载失败是高频问题。PHP 按固定顺序查找配置文件,--ini 输出的“Loaded Configuration File”才是实际生效的那个。
php.ini,PHP 会尝试从 C:\Windows\php.ini 加载——这个行为容易被忽略,导致改了本地 php.ini 却没效果--with-config-file-path=/opt/php-8.3.6/lib,PHP 会默认查 /usr/local/lib,即使你指定了 --prefix
php.ini:用 php -i | grep "Configuration File" 查 CLI,用 phpinfo() 页面查 Web 环境,二者必须分别确认php --ini 和 php -i 反复验证实际加载的是哪个文件。