从 php 运行的节点命令返回状态代码 1

问题描述 投票:0回答:0

我有 php 7.3、nginx、ubuntu 22.04,还有这个 php:

$cmd = 'LD_PRELOAD="/var/www/localhost/node/so/libcrypto.so.0.9.8 /var/www/localhost/node/so/libssl.so.0.9.8" /var/www/localhost/node/node /var/www/localhost/node/nodejs-highcharts.js /tmp/201c0374305c6a74d019739c0f519a9d';
$output = exec($cmd, $out, $retval);
file_put_contents('/tmp/output.txt', 'output: [' . print_r($output, true) . "]\n\nout: [" . print_r($out, true) . "]\n\nretval: [" . print_r($retval, true) . "]\n\ncmd: [" . $cmd . ']');

当我在命令行上运行那个确切的命令时,它会生成一个没有问题的 svg。但是,当从 php 运行相同的命令时,我得到这个:

output: []

out: [Array
(
)
]

retval: [1]

cmd: [LD_PRELOAD="/var/www/localhost/node/so/libcrypto.so.0.9.8 /var/www/localhost/node/so/libssl.so.0.9.8" /var/www/localhost/node/node /var/www/localhost/node/nodejs-highcharts.js /tmp/74d8fe466d722be67ef78c606c3e5d37]
  • 我以为可能是权限问题,结果我全部改了 节点文件夹中的文件具有用户“www-data”和模式 775.nginx以“www-data”用户运行。
  • 我不确定“1”的返回码表示什么。
  • 我没有收到任何 PHP 错误。
  • 似乎当 php 尝试 exec() 命令时,节点文件甚至根本不会触发。 nodejs-highcharts.js 的第一行写入一个文本文件以显示它正在运行,而从 php 运行时不会写入。从命令行运行时它确实会写入文件。
php node.js command-line exec
© www.soinside.com 2019 - 2024. All rights reserved.