You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Bash脚本向PHP进程传递.txt文件?

别慌!我整理了几个从Bash脚本给PHP进程传递.txt文件的实用方案,都是平时开发里常用的,你可以按需尝试:

方法1:通过命令行参数传递文件路径

这是最直接的方式——Bash把文件路径传给PHP脚本,让PHP自己去读取文件内容。

Bash脚本示例

#!/bin/bash
# 这里替换成你的txt文件路径(绝对路径更稳妥,避免路径问题)
TXT_FILE="/home/user/data.txt"
# 调用PHP脚本并传入文件路径作为参数
php /path/to/your/php_script.php "$TXT_FILE"

PHP脚本示例

<?php
// $argc是参数个数,$argv是参数数组($argv[0]是脚本自身路径)
if ($argc < 2) {
    die("错误:请传入txt文件路径作为参数\n");
}

$filePath = $argv[1];
if (!file_exists($filePath)) {
    die("错误:文件不存在 -> $filePath\n");
}

// 读取文件内容,大文件建议换成fopen/fgets逐行处理
$content = file_get_contents($filePath);
echo "成功读取文件内容:\n$content";
?>

方法2:通过标准输入(stdin)传递文件内容

如果不想传递路径,直接把文件内容通过管道/重定向传给PHP的标准输入,适合不需要保留文件的场景。

Bash脚本示例(两种写法都可以)

#!/bin/bash
# 写法1:用重定向直接传入文件内容
php /path/to/your/php_script.php < /home/user/data.txt

# 写法2:用cat命令配合管道传递
cat /home/user/data.txt | php /path/to/your/php_script.php

PHP脚本示例

<?php
// 从标准输入读取全部内容,大文件建议用fgets逐行读取
$content = file_get_contents('php://stdin');

if (empty(trim($content))) {
    die("错误:没有收到输入内容\n");
}

echo "通过标准输入收到的内容:\n$content";
?>

方法3:用命名管道(FIFO)传递给常驻PHP进程

如果你的PHP是常驻进程(比如守护进程),可以用命名管道实现双向通信,适合持续传递内容的场景。

Bash脚本示例

#!/bin/bash
# 创建命名管道(如果不存在)
FIFO_PIPE="/tmp/my_pipe"
if [ ! -p "$FIFO_PIPE" ]; then
    mkfifo "$FIFO_PIPE"
fi

# 后台启动监听管道的PHP进程
php /path/to/your/listener.php &

# 把txt文件内容写入管道
cat /home/user/data.txt > "$FIFO_PIPE"

# 用完后删除管道(可选,根据需求保留)
rm "$FIFO_PIPE"

PHP监听脚本示例

<?php
$pipePath = "/tmp/my_pipe";
$pipe = fopen($pipePath, 'r');

if (!$pipe) {
    die("错误:无法打开命名管道\n");
}

// 逐行读取管道内容,适合大文件或持续输入
while (!feof($pipe)) {
    $line = fgets($pipe);
    if ($line !== false) {
        echo "收到管道内容:$line";
    }
}

fclose($pipe);
?>

注意事项

  • 确保PHP进程有读取目标.txt文件的权限(可以用chmod调整文件权限,或者谨慎使用sudo执行脚本)
  • 如果是Web环境的PHP(比如Apache/Nginx运行的),和CLI模式的PHP是不同进程,要注意环境变量和权限差异
  • 大文件建议用逐行读取(fgets),避免一次性读取占用过多内存

内容的提问来源于stack exchange,提问作者oyeesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:46:01