You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4中Python脚本通过PHP exec执行时出现MySQL模块缺失问题

解决PHP exec调用Python脚本时找不到mysql.connector模块的问题

树莓派4设备上,bb_refresh_sensors_from_php.py脚本在Thonny IDE和本地CLI中可正常运行,但通过PHP exec()调用时,抛出ModuleNotFoundError: No module named 'mysql'错误。已确认CLI与PHP exec环境下pip和Python版本一致,无MySQL依赖的脚本可正常被PHP调用。

可能的解决方案

1. 使用Python解释器的绝对路径执行脚本

即使which pip结果一致,PHP的exec环境可能仍未正确关联到目标Python解释器。先在本地CLI中获取Python3的绝对路径:

which python3

将PHP中的exec命令改为使用该绝对路径调用脚本,例如:

$number_of_sensors_on_bus = exec("/usr/bin/python3 /home/wp/PythonCode/bb_refresh_sensors_from_php.py 2>&1");

2. 手动添加模块路径到Python脚本

确认mysql.connector的安装路径,在本地CLI执行:

python3 -c "import mysql.connector; print(mysql.connector.__file__)"

提取路径中的父目录(例如输出为/usr/local/lib/python3.9/dist-packages/mysql/connector/__init__.py,则父目录为/usr/local/lib/python3.9/dist-packages),在Python脚本开头添加:

import sys
sys.path.append("/usr/local/lib/python3.9/dist-packages")

3. 为PHP运行用户安装mysql-connector-python

PHP默认以www-data用户运行,而mysql-connector可能仅安装在当前用户环境中。切换到www-data用户重新安装模块:

sudo -u www-data pip3 install mysql-connector-python

4. 修正脚本的Shebang行

将脚本开头的#!/usr/bin/env python3替换为Python解释器的绝对路径(与步骤1中获取的路径一致),例如:

#!/usr/bin/python3

内容的提问来源于stack exchange,提问作者forenkema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:15:02