PHP exec command runs python script but not python3
我目前在OSX上安装了python 2.7,最近安装了3.5.2。
我正在使用XAMPP在Mac上运行本地Web服务器,并且当我从apache中执行python脚本时,它可以正常加载:
1 2
| $executePython ="python" . __DIR__ ."/cycle/cutoff.py $device_id $processPreviousMinutes";
exec("$executePython"); |
但是,当我用python3替换python时,我的脚本拒绝运行。 我可以使用两个版本从命令行手动调用它,但是似乎apache帐户/守护程序无法访问python3。 这与我忽略的配置文件有关吗?
-
您能否只比较python和python3的权限/用户组并回答您自己的问题?
-
检查python2.7和python3.5可执行文件的共享和权限后发现它们完全相同。 还有其他想法吗?
-
我知道,当您尝试从php运行python3`时,您得到了什么? 必须是一些错误消息等。
-
当apache以守护程序用户身份运行时,我在>>tmperrorlog.log 2>&1后面附加了$executePython命令,并收到了sh: python3: command not found。 当我对usrlocalbinpython3的路径进行硬编码时,它将运行! 但是,我只想指定python3,那么该怎么做呢?
-
当我echo $PATH我得到:usrlocalbin usrbin bin usrsbin sbin usrlocalgitbin时,我自己的帐户可以在任何地方运行python3,但是apache守护程序帐户无法运行(但是它可以运行python)。
我们不想弄乱最新OSX上的系统范围路径。 如果您像这样在脚本中添加python3路径,然后执行常规操作,该怎么办
1 2 3
| putenv("PATH=/usr/local/bin/:" . exec('echo $PATH'));
$executePython ="python3" . __DIR__ ."/cycle/cutoff.py $device_id $processPreviousMinutes";
exec("$executePython"); |
putenv只是将python3路径添加到XAMPP apache中的任何当前路径。