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

WordPress插件调用Python脚本时shell_exec返回null的排查求助

解决WordPress插件中shell_exec调用Python脚本返回null的问题

脚本存放位置说明

脚本放在插件目录是合理选择,数据库不适合存储可执行脚本,继续保留在插件文件夹内即可,重点要确保文件权限与路径正确。

排查与修复方案

1. 校验命令路径与文件权限

  • 确认python3的绝对路径:本地环境中python3的路径可能不是全局可直接调用的,在终端执行which python3(Linux/macOS)或where python3(Windows)获取完整路径,替换代码中的python3。
  • 给transcribe.py设置正确权限:确保PHP运行用户(通常是www-data、nginx或apache)拥有读和执行权限,执行命令:chmod 755 /你的插件目录路径/transcribe.py。

2. 捕获错误输出排查问题

shell_exec仅返回标准输出,错误信息会被隐藏,修改命令将错误重定向到标准输出,便于调试:

$command = escapeshellcmd("python3 " . plugin_dir_path(__FILE__) . "transcribe.py " . escapeshellarg($file_path) . " 2>&1");
$output = shell_exec($command);
// 临时输出调试信息,排查后可删除
var_dump($output);
wp_die();

通过输出内容可以直接看到Python脚本执行时的错误,比如依赖缺失、文件找不到、权限不足等具体问题。

3. 验证路径拼接正确性

检查plugin_dir_path(__FILE__)的输出是否带末尾斜杠,避免拼接后出现/plugins/myplugintranscribe.py这类缺少分隔符的错误,可临时添加代码确认路径:

var_dump(plugin_dir_path(__FILE__));

4. 测试Python脚本独立运行能力

直接在终端手动执行拼接后的完整命令,比如:

python3 /你的插件目录路径/transcribe.py "/目标音频文件路径.mp3"

如果手动执行也失败,优先修复Python脚本本身问题,比如安装缺失的依赖包、修正脚本逻辑错误。

5. 检查PHP环境限制

即使shell_exec未被禁用,部分环境可能开启了open_basedir限制,导致PHP无法访问Python路径或脚本路径,可查看php.ini中的open_basedir配置,必要时添加允许访问的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:05:00