游乐游手机版
首页/编程语言/文章详情

php脚本在ubuntu上怎么执行

时间:2026-04-25 16:28
在 Ubuntu 上执行 PHP 脚本的几种常用方法 想在 Ubuntu 系统里跑 PHP 脚本?路子其实挺多的,关键得看你的具体场景。是临时测试一下,还是做成 Web 服务,或者需要定时、后台运行?下面这几种主流方法,基本能覆盖你遇到的大部分需求。 1 使用命令行直接运行 PHP 脚本 最直接、

在 Ubuntu 上执行 PHP 脚本的几种常用方法

php脚本在ubuntu上怎么执行

想在 Ubuntu 系统里跑 PHP 脚本?路子其实挺多的,关键得看你的具体场景。是临时测试一下,还是做成 Web 服务,或者需要定时、后台运行?下面这几种主流方法,基本能覆盖你遇到的大部分需求。

1. 使用命令行直接运行 PHP 脚本

最直接、最“朴素”的方法,莫过于在终端里敲命令了。当然,前提是你的系统已经装好了 PHP。怎么确认呢?打开终端,输入下面这行命令看看版本信息:

php -v

如果系统提示“命令未找到”,那就说明 PHP 还没安装。别急,安装起来很简单。以安装 PHP 8.1 为例,两条命令就能搞定:

sudo apt update
sudo apt install php8.1

安装完成后,假设你的脚本文件叫 script.php,放在某个路径下,直接用 php 命令跟上文件全路径就能执行:

php /path/to/script.php

看,是不是跟运行 Python 或 Bash 脚本一样简单?

2. 使用 Shebang 指定 PHP 解释器

如果你想让 PHP 脚本像普通可执行程序一样,直接输入文件名就能跑,那就得请 Shebang(#!)出场了。这行“魔法注释”的作用,就是告诉系统该用哪个解释器来执行这个文件。

具体操作分两步。首先,编辑你的 script.php 文件,在文件最开头加上:

#!/usr/bin/env php

然后,关键一步,给脚本加上可执行权限:

chmod +x /path/to/script.php

这样一来,你就可以像运行系统命令一样,直接执行它了:

/path/to/script.php

这种方式特别适合那些需要频繁手动执行的工具类脚本。

3. 使用 Apache 或 Nginx 作为 Web 服务器

如果脚本需要通过浏览器来访问,比如开发一个网站或 API,那就得配置 Web 服务器了。Ubuntu 上主流的选择是 Apache 和 Nginx。

使用 Apache

  1. 安装 Apache 和 PHP 模块:

    sudo apt update
    sudo apt install apache2 libapache2-mod-php
  2. 启用对应的 PHP 模块(以 8.1 为例):

    sudo a2enmod php8.1
  3. 重启 Apache 服务让配置生效:

    sudo systemctl restart apache2
  4. 把你的 PHP 脚本放到 Apache 的默认网站目录(通常是 /var/www/html):

    sudo cp /path/to/script.php /var/www/html/
  5. 最后,打开浏览器,访问 https://你的服务器IP/script.php,就能看到脚本的执行结果了。

使用 Nginx

  1. Nginx 本身不处理 PHP,需要配合 PHP-FPM。先安装它们:

    sudo apt update
    sudo apt install nginx php8.1-fpm
  2. 接下来配置 Nginx。编辑默认站点配置文件:

    sudo nano /etc/nginx/sites-a vailable/default

    server 配置块里,确保有处理 .php 文件的指令,内容大致如下(请根据实际情况调整路径和 PHP 版本):

    server {
        listen 80;
        server_name your_server_ip;
        root /var/www/html;
        index index.php index.html index.htm;
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
  3. 保存配置后,重启 Nginx:

    sudo systemctl restart nginx
  4. 同样,把脚本文件放到网站根目录 /var/www/html/

    sudo cp /path/to/script.php /var/www/html/
  5. 在浏览器中访问 https://你的服务器IP/script.php 即可。

4. 使用 Cron 定时执行 PHP 脚本

有些任务需要定期执行,比如每天凌晨清理缓存、每小时同步一次数据。这时候,Linux 自带的 Cron 定时任务工具就派上用场了。

  1. 编辑当前用户的 Cron 任务表:

    crontab -e
  2. 在打开的文件末尾添加一行。这行的格式定义了执行时间和要执行的命令。举个例子,如果你想让脚本每天凌晨 2 点运行,并把输出日志记录到文件里,可以这样写:

    0 2 * * * /usr/bin/php /path/to/script.php >> /path/to/logfile.log 2>&1
  3. 保存并退出编辑器。Cron 服务会自动加载新的配置,之后就会按照你设定的时间准时执行了。

5. 使用 Supervisor 管理 PHP 脚本

最后一种情况:你的脚本需要作为一个守护进程,长期在后台运行,并且挂了还能自动重启。这种需求,就轮到 Supervisor 这种专业的进程管理工具登场了。

  1. 先安装 Supervisor:

    sudo apt install supervisor
  2. 为你的脚本创建一个专属的 Supervisor 配置文件:

    sudo nano /etc/supervisor/conf.d/script.conf

    文件内容大致如下,你需要修改命令和日志文件的路径:

    [program:script]
    command=/usr/bin/php /path/to/script.php
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/script.err.log
    stdout_logfile=/var/log/script.out.log
  3. 让 Supervisor 识别新配置并启动你的程序:

    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start script
  4. 之后,你可以随时用下面这个命令查看脚本的运行状态:

    sudo supervisorctl status script

总结

方法列了不少,怎么选?其实很简单,对号入座就行:

  • 直接运行:适合快速测试、一次性任务,最轻量。
  • Shebang:适合做成命令行工具,追求执行便利性。
  • Web 服务器(Apache/Nginx):这是 PHP 的老本行,适合所有需要通过浏览器或 HTTP 请求访问的场景。
  • Cron:专攻定时、周期性的任务,比如数据备份、报表生成。
  • Supervisor:负责管理需要 7x24 小时稳定运行的后台守护进程。

根据你的实际需求,挑一种最顺手的方式开始吧。在 Ubuntu 上玩转 PHP 脚本,其实就这么回事。

来源:https://www.yisu.com/ask/51189272.html
上一篇ubuntu编译golang项目报错怎么办 下一篇如何在ubuntu上使用golang编译脚本
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
如何在ThinkPHP中实现定时任务与命令行调度方法
编程语言 · 2026-07-04

如何在ThinkPHP中实现定时任务与命令行调度方法

用ThinkPHP实现定时任务时,很多开发者第一步就卡在命令行报错上,直接输入php think your:command却无法识别——这种情况绝大多数是因为命令类的注册方式存在问题。下面先梳理几个核心要点。 ThinkPHP 6 中 think 命令如何正确触发自定义指令 直接运行 php thi

ThinkPHP API接口防重放攻击实现方法
编程语言 · 2026-07-04

ThinkPHP API接口防重放攻击实现方法

先说几个核心判断:API防重放攻击这件事,做对了是道防火墙,做错了就是个心理安慰。很多开发者到踩坑了才明白——验签这东西,放错位置、漏掉字段、存错nonce,每一环都能让整个安全体系直接归零。 验签必须放在中间件里,不能在控制器里写 ThinkPHP 的请求生命周期中,中间件是唯一能在路由匹配、参数

ThinkPHP文件上传必须验证扩展名安全必要性分析
编程语言 · 2026-07-04

ThinkPHP文件上传必须验证扩展名安全必要性分析

在使用ThinkPHP进行文件上传时,ext扩展名验证通常是开发者首先接触的关键环节。但你真的了解它的实际工作原理吗?它仅比对文件名后缀,而不读取文件内容,甚至对空格和大小写都极其敏感。更为重要的是——它是TP文件上传验证五层防线中不可忽视的第一道关卡,一旦配置遗漏,整个validate验证链将直接

ThinkPHP关联模型自动写入与更新使用教程
编程语言 · 2026-07-04

ThinkPHP关联模型自动写入与更新使用教程

需要明确的是,ThinkPHP关联模型并没有提供所谓的“自动写入 更新”魔法开关。所谓的“自动”功能,实际上都需要开发者手动编写配置逻辑才能生效。核心原则在于:主模型和从模型必须分开独立处理,时间戳字段和业务字段需依靠修改器或钩子接管;批量操作则要规规矩矩地绕过模型逻辑来执行——只有理解透彻这些要点

BoxLayout中仅居中一个组件其他默认左对齐
编程语言 · 2026-07-04

BoxLayout中仅居中一个组件其他默认左对齐

在 Java Swing 中使用 BoxLayout 的 Y_AXIS 方向布局时,很多初学者容易掉进一个常见陷阱:希望将某个组件单独设置为中心对齐,但当调用 `setAlignmentX(CENTER_ALIGNMENT)` 后,却发现其他组件也跟着发生了偏移,完全达不到预期效果。实际上,关键之处