在共享主机中使用系统从 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>&1
与 python test.py 2> /dev/null
并可能在问题中显示 python 代码吗?
【参考方案1】:
如果在PHP中使用会更好:
exec('python test.py', $outp, $return);
$return
处会有python脚本返回的错误状态(不为0则有错误),$outp
处会有错误文本
【讨论】:
以上是关于在共享主机中使用系统从 php 执行 python 脚本时显示错误(显示其他输出)的主要内容,如果未能解决你的问题,请参考以下文章
在 Bluehost 共享主机计划中,如何从 PHP 脚本创建数据库? [关闭]
PHP:Composer 使用比所用版本旧的 PHP 版本(在共享主机上)