如何在服务器上非浏览器环境下常驻运行PHP脚本?
让PHP脚本在服务器常驻运行的方法
一、直接通过服务器命令行启动脚本
首先确认服务器安装了PHP命令行工具(CLI),绝大多数Linux服务器默认自带该工具。
- 把你的PHP脚本上传到服务器的任意目录,比如
/var/www/my_daemon.php - 登录服务器的SSH终端,执行启动命令:
- 前台运行(关闭SSH后脚本会停止):
php /var/www/my_daemon.php - 后台常驻运行(断开SSH后仍能持续运行):
nohup php /var/www/my_daemon.php &
注:nohup会默认把脚本输出内容写入当前目录的nohup.out文件,方便后续查看输出信息
- 前台运行(关闭SSH后脚本会停止):
二、确认脚本是否在运行
因为无法通过浏览器查看echo输出,可通过以下方式验证:
- 查看进程:在SSH终端执行
ps aux | grep my_daemon.php,如果返回结果中存在对应的PHP进程条目,说明脚本正在运行 - 写入日志文件:修改脚本,把原本的
echo输出改为写入日志,示例代码:
之后执行// 每次运行时往日志文件追加时间和运行状态信息 file_put_contents('/var/www/script_log.txt', date('Y-m-d H:i:s') . ' 脚本正常运行中' . PHP_EOL, FILE_APPEND);cat /var/www/script_log.txt查看日志,若有持续新增的内容,说明脚本在正常运行 - 端口监听检查(针对网络服务类脚本):如果你的脚本需要监听某个端口,执行
netstat -tulpn | grep php,查看对应端口是否被PHP进程占用
三、更稳定的管理方案:使用进程守护工具(可选)
如果希望脚本崩溃后自动重启,或者更便捷地管理脚本生命周期,可以用supervisor:
- 安装supervisor(以Ubuntu系统为例):
apt install supervisor - 创建配置文件,比如
/etc/supervisor/conf.d/my_script.conf,内容示例:[program:my_script] command=php /var/www/my_daemon.php user=www-data # 使用服务器网页用户运行,避免权限问题 autostart=true # 服务器开机自动启动脚本 autorestart=true # 脚本崩溃时自动重启 stdout_logfile=/var/www/script_stdout.log # 标准输出日志路径 stderr_logfile=/var/www/script_stderr.log # 错误日志路径 - 重启supervisor使配置生效:
systemctl restart supervisor - 查看脚本运行状态:
supervisorctl status my_script
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

