怎样调用python程序_php如何调用python程序并得到返回值?

苏南大叔碰到了个非常有意思的python程序,想把这个功能集成到我的网站功能里面。但是,想想要把这个python翻译成php,想想就是很痛苦的事情。

667d4f1158f4c445.pngphp如何调用python程序并得到返回值?(图2-1)

以前闲的无聊的时候,苏南大叔曾经把e语言的翻译成c#的。还曾经把汇编通过od的插件翻译成c++,然后再翻译成c#,或者把c#的翻译成php的,把js的翻译成php的,诸如此类。有的时候,就觉得,现在这么多编程语言,真心是折磨人啊。

本文中,苏南大叔举例说明了,如何在php中调用python的功能。涉及的这个python模块叫做myqr,大家可以在github上面找到相关链接。

本文测试环境:centos7/php71/python27。

设置disable_functions

想想看,转译这个功能的话,既然这么痛苦,那么是不是可以直接调用python功能呢?然后苏南大叔仔细实验了一下,还真是可以的。

这里就涉及到一个php.ini的设置叫做:disable_functions。默认的情况下,这里禁用了好几个函数,因为这些函数可能会给你的系统造成危害。disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru

而调用python就需要exec或者shell_exec或者system函数。本次实验中,苏南大叔选择的是exec。

php调用python范例

代码如下:exec("myqr http://yourdomain -p test.gif -c -n qrcode.gif 2>&1;", $array, $ret);$array里面是命令的返回值输出,就是直接在ternimal里面输入命令看到的文字。

而命令行里面的2>&1是重定向输出的意思,必须加上这句话,$array才会有数值。$ret表示返回值,如果不是0,那就是调用失败,出错了。

这个实验的过程,也不是一帆风顺的,这里也是多次修正,才得出这些结论。至于我的实验对象,myqr,其实在我centos下面也报错了,具体的以后再写文章说这事。

宝塔设置php.ini

下图是宝塔面板里面的相关配置界面,不过这个是全局配置,会影响所有的站点。

ab8e0d7136669252.pngphp如何调用python程序并得到返回值?(图2-2)

相关文章

小结论

题外话:上述exec的最后两个参数$array和$ret,从使用角度上来看,就是2个引用类型的参数。这在hack语言里面是无法接受的。hack语言是不接受引用类型的。那么不知道,hack语言里面对于exec这个危险函数是怎么处理的呢?且听下回分解。

更多python相关的文章,请点击下面的链接查看:

end.gif

ok.png 如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。

stop.png 本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。

转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。

未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。

《程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值