ThinkPHP 在 Linux 上是部署而非安装,核心是上传代码、配置 Web 服务、设置权限;需将项目传至如 /var/www/myapp,root 指向 public 目录,确保 runtime 可写、.env 存在且正确,注意 PHP CLI 与 Web 版本一致及用户权限匹配。

ThinkPHP 在 Linux 服务器上不是“安装”,而是“部署”——你不需要运行什么安装程序,核心动作是上传代码、配置 Web 服务、设好权限。
怎么把 ThinkPHP 项目放到 Linux 服务器上
本质就是把本地开发好的项目(含 think 命令、app、public 等目录)传到服务器指定位置,比如 /var/www/myapp。别直接解压到 /var/www 根下,容易权限混乱或暴露敏感文件。
- 用
scp或rsync传整个项目目录,确保public目录里的index.php是 Web 服务器的入口点 - 上传后立刻检查
runtime目录是否存在;不存在就手动建,且必须可写:mkdir runtime && chmod -R 755 runtime - 别漏掉
.env文件——它通常被 git 忽略,但生产环境必须存在并填好数据库、调试开关等配置
Apache/Nginx 怎么配才能跑通 ThinkPHP
关键不是“支持 ThinkPHP”,而是正确转发请求到 public/index.php,否则会 404 或直接下载 PHP 文件。
- Apache:确认启用了
mod_rewrite,且项目根目录的.htaccess没被AllowOverride None拦住;最稳的做法是在虚拟主机配置里直接写重写规则,而不是依赖 .htaccess - Nginx:必须把
root指向public目录(不是项目根目录),并在location /块里加try_files $uri $uri/ /index.php?$query_string; - 常见错误:
403 Forbidden多半是public目录权限不对或 SELinux 开着没放行;500 Internal Server Error往往是runtime不可写或.env语法错
为什么 php think 命令在服务器上执行报错
因为线上环境通常关闭了 display_errors,也禁用了某些函数(如 proc_open),而 think 命令依赖这些能力做缓存清理、路由生成等。
立即学习“PHP免费学习笔记(深入)”;
- 先确认 PHP CLI 版本和 Web 版本一致:
php -v和phpinfo()对得上 - 运行前加
export APP_ENV=production,避免命令试图加载开发专用配置 - 删缓存别用
php think clear,改用rm -rf runtime/*更可靠;路由缓存同理,rm -f runtime/route.php - 如果提示
command not found,检查是否在项目根目录执行,且think文件有执行权限:chmod +x think
真正卡住人的地方,往往不是框架本身,而是 Linux 权限模型和 Web 服务器配置的组合效应——比如 runtime 目录属主是 www-data,但你用 root 上传后忘了改;又比如 Nginx 用 nginx 用户跑,但 PHP-FPM 用的是 www-data,两者对 runtime 的读写权限不一致。











