所以我有一个 php 脚本,在其中我从应用程序发送所需的数据,然后在 php 脚本中,该数据作为命令行参数传递给 python 脚本。问题是当我从终端运行 python 脚本时,它运行成功,但是当我使用 postman 运行 PHP 脚本时,python 脚本不运行。
<code>$output = shell_exec("python3 final.py $day $month $year $hour 2>&1");</code>
这是我调用 py 脚本的行,当我从终端运行相同的脚本时,它会生成输出,但是当我像这样运行它并转储 $output 时,我收到错误
<code>ModuleNotFoundError: No module named 'sklearn'</code>
但是 sklearn 已经安装,并且它通过终端运行。
请建议我对此问题该怎么办?
最佳答案
现在它可以工作了,以 sudo 身份运行命令并使用 exec()
而不是 shell_exec()
并且还更改了执行命令的用户,请引用此https://raspberrypi.stackexchange.com/a/78156 .
您可能需要绕过用户密码,绕过 www-data 看到这个https://stackoverflow.com/a/24107529/10498074
另请参阅同一页面上的 Jenkins 答案 https://stackoverflow.com/a/24648413/10498074
我的最终命令是 $output = exec("sudo -S -u username/usr/bin/python3/var/www/html/PathTo/final.py $day $month $year $hour 2> &1");
在 sudo visudo 中,我在最后一行添加了命令 www-data ALL =(ALL) NOPASSWD:/usr/bin/python3
尝试再次运行 php 脚本,它成功了!
关于PHP脚本无法正确运行python脚本,但它在终端上正确运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59471352/