php cli传参有五种方法:一、用$argv获取参数;二、用getopt()解析选项;三、用getenv()或$_env读环境变量;四、用stdin读交互输入;五、用php -d define=方式定义常量。

如果您在PHP命令行环境中运行脚本,需要向脚本传递动态数据,则必须通过命令行参数或环境变量方式将值注入PHP进程。以下是几种在PHP命令行中使用变量的具体方法:
一、通过$argv数组获取命令行参数
PHP在CLI模式下自动将命令行参数存入全局数组$argv,其中$argv[0]为脚本路径,后续元素依次为传入的参数值。该方式适用于一次性传入少量离散值。
1、创建文件test.php,内容为:echo "第一个参数:{$argv[1]}\n"; echo "第二个参数:{$argv[2]}\n";
2、在终端执行:php test.php hello world
立即学习“PHP免费学习笔记(深入)”;
3、输出结果中将显示:第一个参数:hello 和 第二个参数:world
二、使用getopt()函数解析带选项的参数
getopt()支持短选项(如-a、-b)和长选项(如--name、--port),可识别带参数的选项并返回关联数组,适合构建具备标准CLI交互风格的脚本。
1、编写脚本parse.php,内容包含:$options = getopt("a:b::", ["name:", "port::"]); var_dump($options);
2、执行命令:php parse.php -a value1 --name=php7 --port=8080
3、输出中将显示键名为a、name、port的数组项,其值分别为value1、php7、8080
三、通过环境变量读取外部设定值
在执行PHP脚本前设置环境变量,脚本内使用getenv()或$_ENV读取,适用于配置类常量(如数据库密码、API密钥),避免硬编码且便于多环境切换。
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统
1、在Shell中执行:export APP_ENV=production && export DB_HOST=localhost
2、脚本中调用:echo getenv('APP_ENV'); echo $_ENV['DB_HOST'];
3、确保php.ini中variables_order包含E,否则$_ENV可能为空
四、使用STDIN读取运行时输入
当需要交互式输入或接收管道数据时,可使用fscanf(STDIN, ...)或stream_get_line(STDIN, ...)从标准输入流读取,适用于用户手动输入或与其他命令组合使用。
1、脚本中写入:$name = trim(fgets(STDIN)); echo "你好,{$name}!\n";
2、执行后终端会暂停等待输入,键入张三并回车
3、输出:你好,张三!
五、通过define()在CLI启动时定义常量
可在命令行直接使用-d选项配合define()语法,在脚本执行前注册常量,该常量在脚本全局作用域有效,适合不可变配置项。
1、执行命令:php -d define=DEBUG_MODE=true script.php
2、脚本内检测:if (defined('DEBUG_MODE') && DEBUG_MODE) { echo '调试模式已启用'; }
3、注意:此方式仅在PHP 7.4+支持,且需确保--enable-zts未启用,否则define()可能失效










