在共享主机中使用系统从 php 执行 python 脚本时显示错误(显示其他输出)

Posted

技术标签:

【中文标题】在共享主机中使用系统从 php 执行 python 脚本时显示错误(显示其他输出)【英文标题】:displaying errors when executing a python script from php with system, in a shared hosting (other output is displayed) 【发布时间】:2016-06-16 12:51:03 【问题描述】:

我正在用方式从 php 执行 python 脚本,

$mystring = system('python test.py', $retval);

它有效,我只想查看来自 python 脚本的错误消息。是否可以?它正在返回输出,例如,我从 python 脚本中看到“打印“hello””,但我没有从 python 脚本中看到错误,显然无法加载模块,因为执行在那里停止并且我没有看到显示的错误.

【问题讨论】:

Php system() / exec() don't return output 的可能副本,还有其他的。本质上,尝试:$mystring = system('python test.py 2>&1', $retval);instead。这混合了标准错误和标准输出。 其实是返回输出,比如python脚本有打印我看到了,但是看不到错误。我在导入错误之前看到“打印”,但之后看不到,并且不显示导入错误消息 是的,这就是 2>&1 发挥作用的地方,它告诉系统将所有用于文件描述符 2(标准错误流)的内容写入 fd 1(即如果没有人摆弄它的标准输出;-))。请尝试评论/答案,如果它符合您的要求,请在此处享受并报告。谢谢。 我刚试过.. 最后一个选项我根本看不到输出:) 该托管平台上的底层外壳是什么?您可以通过 ssh 测试登录并直接在该文件夹中尝试 python test.py 2>&1python test.py 2> /dev/null 并可能在问题中显示 python 代码吗? 【参考方案1】:

如果在PHP中使用会更好:

exec('python test.py', $outp, $return);

$return处会有python脚本返回的错误状态(不为0则有错误),$outp处会有错误文本

【讨论】:

以上是关于在共享主机中使用系统从 php 执行 python 脚本时显示错误(显示其他输出)的主要内容,如果未能解决你的问题,请参考以下文章

在 Bluehost 共享主机计划中,如何从 PHP 脚本创建数据库? [关闭]

共享主机上的 CodeIgniter Cron 作业?

PHP:Composer 使用比所用版本旧的 PHP 版本(在共享主机上)

Python 共享主机

如何将 python 库从主机共享到多个 docker 容器?

Linux系统共享宿主机Windows系统中文件