我需要运行一个python脚本,通过PHP生成的网页使用pyinstaller编译。我尝试了shell_exec(),exec()和system()但没有成功。我经常使用后台从终端运行脚本:
temperature_sensor_code > /dev/null 2>&1
我已经为sudoers添加了www-data用户。我知道这不是一个好方法,但我需要它来发送killall temperature_sensor_code命令(这是有效的)。
这是我的情况:
<?php
$run = escapeshellcmd('temperature_sensor_code > /dev/null 2>&1');
shell_exec($run);
header("Refresh: 0; URL=index.php");
?>
我在/ usr / bin中创建了一个符号链接,也尝试了脚本的完整路径而没有运气。
更新:为了使它更简单,我创建了一个简单的sh脚本run.sh并放入/ var / www并使其运行
shell_exec("/var/www/run.sh");
这对我有用。所以我把我的脚本temperature_sensor_code放在/ var / www中,但这不起作用。如果我添加var_dump(exec("/var/www/temperature_sensor_code/temperature_sensor_code"));
给我:string(0)“”
我认为编译的python脚本存在问题,因为PHP端似乎没问题。
escapeshellcmd()这样做:
逃脱shell元字符
$run = escapeshellcmd('temperature_sensor_code > /dev/null 2>&1');
var_dump($run);
string(43) "temperature_sensor_code \> /dev/null 2\>\&1"
但是你有shell元字符,你确实想要表现为shell元字符:
temperature_sensor_code > /dev/null 2>&1
^ ^^^^
您根本没有进行任何故障排除:
/dev/null
的那个)我建议:
> /dev/null
,直到你诊断出来