shell - Does PHP support process substitution? -
i've trying following examples such as:
$ php -r 'require_once($argv[1]);' <(echo "hello") or:
$ php -r 'file_get_contents($argv[1]);' <(echo "hello") both fails like:
php warning: require_once(/dev/fd/63): failed open stream: no such file or directory in command line code on line 1
php warning: file_get_contents(/dev/fd/63): failed open stream: no such file or directory in command line code on line 1
or:
$ php -r 'file_get_contents($argv[0]);' < <(echo "hello") which fails with:
php fatal error: require_once(): failed opening required '-' (include_path='.:/usr/share/pear:/usr/share/php') in command line code on line 1
the above attempts inspired drush command, example:
$ drush --early=<(echo print 123';') "" [warning] require_once(/dev/fd/63): failed open stream: no such file or directory preflight.inc:58 where inject dynamic php code file descriptor (without creating separate file each time) in order execute code before bootstrapping main code.
other similar command tools works correctly:
$ cat <(echo "hello") hello or:
$ python -c "import sys; print sys.stdin.readlines()" < <(echo "hello") ['hello\n'] i've found php bug , this one, these has been fixed long time ago , i'm using 5.6.22.
is there way can trick php reading data process substitution (to read file descriptor , e.g. /dev/fd) when called cli, using simple one-liner?
the error message gives hint: php cannot find given file.
but wait, file? well, let's remember process substitution is:
process substitution form of redirection input or output of process (some sequence of commands) appear temporary file.
and see when print argument providing way:
$ php -r 'print $argv[1];' <(echo "a") to me returns following temporary file:
/dev/fd/63 so yes, can use process substitution php, not this.
if want use output of command argument, use $() expand it:
$ php -r 'print $argv[1];' "$(echo "hello man")" hello man
Comments
Post a Comment