【问题标题】:Php shell_exec() not running python scriptphp shell_exec()没有运行python脚本
【发布时间】:2020-05-12 02:14:15
【问题描述】:

我正在尝试从 php 代码运行 python 脚本。我已经关注其他线程来查看我做错了什么,但我似乎找不到问题。

$out = shell_exec(escapeshellcmd("/path/to/script/here/script.py arg1 arg2"));
echo $out;

您可能会问,是的,脚本:

  1. 添加了“#!/usr/bin/env python3”
  2. 有权被组 www-data 读取和执行(来自输出 apachectl -S)
  3. 可执行

同时,任何其他非脚本命令都可以与shell_exec()一起正常工作

【问题讨论】:

  • 你试过在命令前面加上“python3”吗?所以"python3 '/path/script.py' args"
  • 我认为escapeshellcmd 正在逃避所有/。你不需要它,除非它来自其他地方。如果 args 是单独使用 escapeshellarg ,也许。
  • @AbraCadaver 你肯定想要 / 转义,因为它们只是作为路径一部分的文本,而不是任何特殊的东西?无论如何,不​​是\ 通常是特别的吗? XDead,如果你把 python 文件放在你的 php 文件旁边,这样你就不需要包含任何斜线并且可以通过名称来调用它会发生什么?
  • @ch4rl1e97 我刚刚尝试将脚本文件放在与php文件相同的目录中,结果是一样的。也添加 'python3' 或 '/usr/bin/python3' 什么都不做。

标签: python php python-3.x web


【解决方案1】:

我尝试了您的代码,它对我来说工作正常。 如果有错误,必须记录在error.log文件中。 例如我正在使用 apache,所以我的错误记录在 /var/log/apache2/error.log

【讨论】:

  • 感谢您的回复。事实上,由于在 www-data 用户上我没有安装所有 python 模块,因此存在错误。
猜你喜欢
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
相关资源
最近更新 更多