推荐XAMPP(Windows)或Homebrew组合(macOS/Linux),禁用开机自启,必调php.ini的error_reporting、display_errors、date.timezone及上传参数,数据库连接统一用127.0.0.1,hosts配dev.local便于多项目管理。
PHP 动态网站开发不需要从零编译 Apache + PHP + MySQL,用现成的集成环境能快速启动,但选错工具或忽略配置细节,反而会让后续调试变困难。
XAMPP 还是 phpstudy?看系统和需求Windows 下推荐 XAMPP(官方维护、版本清晰、日志路径固定),macOS / Linux 建议直接用 Homebrew + php + nginx 组合(更贴近生产环境)。phpstudy 虽然操作简单,但默认开启远程访问、自带非标准扩展,本地测试可以,一写数据库连接就容易因端口/权限报 Connection refused。
XAMPP 安装后,Apache 默认监听 80 端口,若被 Skype 或 IIS 占用,启动会失败,需手动改 httpd.conf 里的 Listen 80
brew install php@8.2 nginx mysql 后,php -v 和 which php 必须指向 brew 安装路径,否则终端跑的是系统自带旧版 PHPphp.ini 必调的三项配置默认配置下, error_reporting 关闭、display_errors 关闭、uploa 只有 2M——这些不改,你连上传头像都会静默失败。
error_reporting = E_ALL 和 display_errors = On 设为开发时的铁律,否则 Undefined variable 错误根本不会显示在页面上date.timezone = Asia/Shanghai 必须显式设置,否则 date() 返回 Warning: date(): It is not safe to rely on the system's timezone settings
$_FILES 上传大文件,除了改 upload_max_filesize,还得同步调大 post_max_size 和 max_execution_time
localhost 还是 127.0.0.1 访问?别小看这个区别浏览器访问 http://localhost 有时会跳转到 HTTPS 或触发代理规则;而 http://127.0.0.1 是最干净的直连方式。尤其当你在 phpinfo() 里看到 SERVER_ADDR 是 ::1(IPv6 回环),但代码里硬写 localhost 连 MySQL,就可能因 DNS 解析顺序导致连接超时。
127.0.0.1 替代 localhost,避免 Unix socket 和 TCP 混用/etc/hosts(macOS/Linux)或 C:\Windows\System32\drivers\etc\hosts(Windows)里加一行 127.0.0.1 dev.local,然后配虚拟主机,比死守 localhost 更利于多项目管理localhost 的 HSTS 策略,万一之前访问过 HTTPS 版本,再切回 HTTP 会跳 ERR_SSL_PROTOCOL_ERROR,此时清空浏览器 HSTS 设置比重启服务更有效环境不是搭完就能一劳永逸——PHP 版本升级、扩展加载顺序、OPcache 开关状态,都会让同一段代码在不同机器上表现不一致。真正卡住人的,往往不是“怎么装”,而是“为什么它在这里行,在那里不行”。