在命令行上,php
可以从STDIN读取代码并执行它:
$ echo '<?php echo "Executing stdin\n";' | php
Executing stdin
我想传入一个可供STDIN代码使用的变量。我注意到-B
option似乎是一种方法:
-B --process-begin |在处理stdin之前执行的PHP代码。在PHP 5中添加。
当我尝试时,没有任何回应:
$ echo '<?php echo "Executing stdin with passed variable: $foo\n";' |
php -B '$foo = "some value";'
实际上,传递-B
似乎打破了代码,因为这没有做任何事情:
$ echo '<?php echo "Executing stdin\n";' | php -B ''
如何使用-B
选项?我有没有机会让它做我想做的事?
我只能假设PHP文档中的“在处理stdin之前”部分是不正确的。应该阅读 - 据我所知 - “在运行使用-R或-F传递的代码之前执行的PHP代码”。有关更多背景信息,请参阅腾讯的答案。
答案 0 :(得分:1)
-B标志是在运行-R。
定义的主代码之前运行的开始代码命令行帮助显示:
php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
正如您所看到的,在此用例中-R标志不是可选的。
要传递参数,只需将它们放在args参数中。
php [options] -r <code> [--] [args...]