php脚本在宝塔面板下需区分web和cli两种执行模式:web模式依赖nginx/apache+php-fpm,受站点绑定php版本及php-fpm.ini约束;cli模式绕过web层,使用独立php-cli.ini,须用绝对路径调用php命令,且环境变量、权限、配置均不同,混用易报错。

php 脚本在宝塔面板下能直接运行,但必须明确区分「Web 访问执行」和「后台命令行执行」两种场景——前者依赖 Web 服务(Nginx/Apache + PHP-FPM),后者绕过 Web 层、纯命令行调用,两者权限、环境变量、配置项都不同,混用会报错或行为异常。
通过浏览器访问执行(Web SAPI 模式)
这是最常用的方式,适用于有 HTTP 入口的脚本(如 index.php、api.php 或 info.php)。
- 脚本必须放在已启用 PHP 的网站根目录下(例如
/www/wwwroot/your-site/),且该站点在宝塔中已绑定域名并选择对应 PHP 版本 - 确保文件权限为
644,目录权限为755;若脚本读写文件或调用系统命令,需确认 PHP 进程用户(通常是www)有对应路径的读写权限 - PHP 配置受当前站点所选 PHP 版本的
php.ini约束,比如max_execution_time、memory_limit、disable_functions都会影响脚本是否能跑通 - 常见错误:
File not found(路径不对)、500 Internal Server Error(PHP 语法错误或扩展缺失)、Permission denied(文件属主不是www或 SELinux 启用)
示例:上传一个 test.php 到网站根目录,内容为 <?php echo 'OK'; ?>,然后访问 http://your-domain.com/test.php 即可看到输出。
通过宝塔终端或 SSH 执行(CLI 模式)
适合无 Web 交互的脚本,比如队列监听(php think queue:listen)、定时任务、数据迁移等。
- 必须使用完整路径调用
php命令,例如:php /www/wwwroot/your-site/artisan schedule:run;不能只写php artisan,因为宝塔终端默认 PATH 不包含 PHP 安装路径 - CLI 模式加载的是
php.ini的 CLI 版本(通常在/www/server/php/{版本号}/etc/php-cli.ini),与 Web 模式使用的php-fpm.ini是两个文件,opcache.enable、extension等可能不一致 -
opcache.enable_cli=0是默认值,意味着 CLI 下 OPcache 不生效——这对调试有利,但要注意性能差异 - 若脚本依赖环境变量(如
APP_ENV),需在命令前显式声明,例如:APP_ENV=production php /path/to/script.php
用宝塔计划任务定时执行 PHP 脚本
本质是后台以 www 用户身份定期调用 CLI 模式执行,比手动写 crontab 更可控。
- 在「计划任务」→「添加计划任务」中,类型选「PHP 脚本」,填写绝对路径(如
/www/wwwroot/your-site/backup.php) - 注意:该功能底层执行的是
php -f /path/to/file.php,所以脚本开头无需#!/usr/bin/env php,也**不支持传参** - 如果脚本需要参数或复杂环境,建议改用「Shell 脚本」类型,里面写:
cd /www/wwwroot/your-site && /www/server/php/82/bin/php artisan backup:run --force - 日志输出默认写入宝塔计划任务页面的「执行日志」,但不会自动记录 stderr;如需捕获错误,应在 Shell 脚本里重定向,例如
2>&1 >> /tmp/backup.log
守护进程运行 PHP 长连接脚本(如 ThinkPHP 队列)
宝塔「进程守护」插件能拉起并维持 PHP CLI 进程,但极易因配置不当反复退出。
- 关键点:进程命令必须是**绝对路径可执行命令**,例如:
/www/server/php/82/bin/php /www/wwwroot/tp8/artisan queue:listen --timeout=60 - 工作目录(Work Dir)填项目根目录(如
/www/wwwroot/tp8),不是public目录 - 插件默认 3 次崩溃后停止守护,常见原因包括:内存超限(PHP
memory_limit太低)、脚本抛出未捕获异常、进程被系统 OOM killer 杀掉、或queue:listen自身检测到代码变更后优雅退出 - 建议先在终端手动运行该命令,观察是否稳定;若稳定再交由守护插件管理;否则应排查脚本逻辑或改用 Supervisor 等更成熟的进程管理工具
真正容易被忽略的是:Web 和 CLI 两套 PHP 配置完全独立,同一个脚本在浏览器能跑通,不代表在终端也能跑;反过来也一样。调试时务必确认你改的是哪个 php.ini,看的是哪份错误日志。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











