宝塔部署PHP网站需确保版本、扩展、权限、配置四者匹配:检查PHP版本与项目要求一致,安装必要扩展(如openssl、mbstring等),关闭或精准配置open_basedir,设置正确伪静态规则,数据库主机用127.0.0.1替代localhost以避免socket路径错误,并依据error_log定位具体问题。

宝塔面板里添加 PHP 网站前,先确认 PHP 版本和扩展是否匹配
很多项目跑不起来,不是配置错,而是 php.ini 里缺扩展或版本太低。比如 Laravel 要求 openssl、mbstring、pdo_mysql 全开;ThinkPHP 6 还依赖 json 和 ctype。宝塔默认装的 PHP 可能没开全,或者你选了 PHP 7.2 却用了只支持 8.0+ 的 Composer 包。
- 进宝塔 → 软件商店 → 找到已安装的 PHP → 点击“设置” → “安装扩展”,勾选项目必需的项
- 检查
php -v和php --ini输出,确认 CLI 和 Web 使用的是同一套配置(宝塔有时会分环境) - 如果项目用到
redis或swoole,得手动编译安装,不能只靠“一键安装扩展”按钮
上传代码后 500 错误?优先查 error_log 和 open_basedir
宝塔默认开启 open_basedir,限制 PHP 只能访问网站根目录及子目录。但很多框架(如 Laravel)的 storage、bootstrap/cache 在根目录外,或用了 symlink 跳转,就会直接 500,且错误日志里只写“Access denied”。
- 进网站设置 → 网站目录 → 把“防跨站攻击(open_basedir)”关掉(开发环境可接受;生产环境建议精准加路径)
- 看
/www/wwwlogs/你的域名.error.log,别只盯着浏览器 500 页面 - 确认
storage和bootstrap/cache目录权限是www:www(不是root),且有写入权限:chmod -R 755 storage bootstrap/cache
伪静态规则不是复制粘贴就完事:Laravel / ThinkPHP / WordPress 各有坑
宝塔自带的伪静态模板只是起点,实际部署常要微调。比如 Laravel 的 .htaccess 在 Nginx 下无效,必须填对 Nginx 规则;ThinkPHP 6 的 public 目录做根目录后,index.php 路径容易写错;WordPress 子目录安装时,location 块嵌套层级不对就会 404。
- Laravel:网站根目录设为
public文件夹,伪静态选“Laravel 5”,别选 Apache 的.htaccess模板 - ThinkPHP:若入口是
public/index.php,需在伪静态里把try_files $uri $uri/ /index.php?$query_string;改成/public/index.php?$query_string; - 改完点“保存”,再点“重载配置”,光保存不重载等于没改
数据库连不上?重点核对 localhost vs 127.0.0.1 和 socket 路径
宝塔 MySQL 默认监听 127.0.0.1:3306,但有些 PHP 项目配置写的是 localhost。在 Linux 下,localhost 会强制走 Unix socket,而宝塔 MySQL 的 socket 路径是 /tmp/mysql.sock,不是系统默认的 /var/lib/mysql/mysql.sock。连不上时错误通常是 SQLSTATE[HY000] [2002] No such file or directory。
立即学习“PHP免费学习笔记(深入)”;
- PHP 配置里把数据库主机从
localhost改成127.0.0.1是最快解法 - 或者在
php.ini里加一行:mysqli.default_socket = /tmp/mysql.sock(对应你 MySQL 实际 socket 路径) - 用
mysql -u root -p -S /tmp/mysql.sock手动连一下,确认 socket 路径没错
路径、权限、扩展、配置四者只要一个没对齐,项目就起不来。别急着重装面板,先盯住日志里那行具体的错误信息——它比所有教程都准。











