php调用python脚本不执行_【问题解决】PHP无法执行引入cv2的Python脚本

本文记录了在PHP中使用shell_exec()调用含有cv2模块的Python脚本时遇到的问题及解决过程。当PHP无法执行Python脚本,而在命令行中却能成功时,通过查看错误信息发现是cv2模块未找到和numpy版本不兼容的问题。解决方案包括将cv2路径添加到sys.path,统一Python和numpy版本。
摘要由CSDN通过智能技术生成

前言

由于项目需求,需要在 PHP 脚本中调用一个 Python 算法。之前和 Lll 一起做毕设的时候也曾使用 PHP 脚本调用过 Python 编写的协同过滤算法,当时没有出现什么大的问题。但在本次开发过程中,由于 Python 脚本中 cv2 包的引入导致了 PHP 调用 Python 脚本时报错,无法取得正确的运行结果。这次错误排查一波三折,排查的过程也暴露了我本人的一些疏漏,特此记录,以警醒自身。

正文

1 错误描述

在 PHP 文件中使用 shell_exec() 函数调用目标 Python 脚本,该 Python 脚本的运行结果会保存一张图片在指定文件夹中,但运行 PHP 脚本后发现该 Python 脚本没有被成功调用,无事发生。

但在命令行中调用 PHP 脚本发现 Python 脚本可以被成功调用,这就很奇怪了,这说明 PHP 程序没有任何问题。

2 解决过程

在解决的过程中尝试过很多方法,比如路径是否都写成绝对路径了、Python 的环境变量是否正确之类……但其实这些都是盲目的抓瞎,查找问题还是要看错误提示。

这就是我踩的第一个坑,因为我直接使用 PHP 中的 shell_exec() 方法调用 Python 脚本失败后并没有在 Web 页面显示任何错误信息,而我在没有查看错误提示的情况下就开始盲目地排查错误的原因,导致浪费了很多时间。

输出错误信息的方法就是在所调用的脚本后加入 2>&1。

2>&1 涉及到 Linux 的三种标准输入输出,如下:

STDIN:标准输入,编号0<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值