我有三个PHP脚本。一,我从init脚本开始。第二个是由第一个本身启动的,第二个是使用shell_exec
通过定期将各种参数传递给第三个脚本来获取第三个脚本的输出。
但它没有发生。当我var_dump
输出shell_exec
时,在第二个脚本中,我得到NULL
。但是当我在第二个脚本中打印shell_exec
中使用的实际命令并尝试将其输入控制台时,它的效果非常好!
我尝试从启动init脚本的同一用户的控制台发出命令。
这可能是许可问题。但我有适当的权限设置,即
注意 - 我尝试使用shebang启动第三个脚本,同时删除shebang并在脚本路径之前添加php
。 root用一切都运行良好。
另外,只是另一个注释,第一个脚本将第二个脚本的输出重定向到日志文件(这是我在NULL
上发现第三个脚本返回shell_exec
的地方)
更新:第二个脚本中使用shell_exec
$command = "/var/data/user-data.php '{$user}' '{$request['token']}' '{$request['secret']}'";
$data = json_decode( shell_exec( $command ), true );
我尝试打印$command
和var_dump( shell_exec( $command ) )
。前者返回预期的内容(params),后者返回NULL
答案 0 :(得分:-2)
没有直接评论问题是什么 -
停止。不要掏出来。这是一个安全雷区。
$command = "/var/data/user-data.php '{$user}' '{$request['token']}' '{$request['secret']}'";
如果用户通过,会发生什么,比如说:
http://yoursite.com/index.php?token=';rm -rf / #
答案:您的整个服务器已被删除(或至少PHP脚本用户可以触摸的任何内容)。当然,人们还可以做其他更阴险的事情。而且,自动扫描程序可以找到 和 这类漏洞,而自动扫描程序又可以自动根据您的服务器。
所以不要炮轰,特别是当你刚刚调用另一个PHP脚本时。将代码放入函数中,包含包含它的php文件,并在需要数据时调用函数。