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

Laravel使用Symfony Process调用Python报_Py_HashRandomization_Init错误如何解决

错误原因

你遇到的Python初始化报错核心是Web服务运行时的环境变量缺失:Windows平台下Python初始化需要读取SYSTEMROOT环境变量调用系统接口生成随机数,命令行执行时会继承当前登录用户的环境变量所以正常运行,而Web服务(Apache/Nginx/PHP-FPM)运行时默认会裁剪环境变量避免安全风险,因此触发_Py_HashRandomization_Init初始化失败。

修复方案

1. 显式为Process传入系统环境变量(推荐)

直接在实例化Process后补充传递SYSTEMROOT变量,修改后的控制器代码如下:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

public function plagiarismCheck() {
    $process = new Process(['C:/Program Files/Python39/python.exe', 'C:/Users/User/Desktop/www/abyss-hub/public/helloads.py']);
    // 传入Windows系统必填环境变量
    $process->setEnv([
        'SYSTEMROOT' => getenv('SYSTEMROOT') ?: 'C:\\Windows'
    ]);
    $process->run();

    if (!$process->isSuccessful()) {
        throw new ProcessFailedException($process);
    }
    return $process->getOutput(); 
}

2. 全局配置PHP继承系统环境变量

如果需要多次调用Python脚本,可以修改PHP配置避免每次传参:

  • 编辑php.ini,找到variables_order配置项,确保值包含E(即开启环境变量读取),示例:variables_order = "EGPCS"
  • 若使用Nginx+PHP-FPM,可在fastcgi_params配置文件中添加一行:fastcgi_param SYSTEMROOT $env(SYSTEMROOT);,重启服务后生效
可选排查项
  • 确认Web服务运行用户(如IIS的IUSR、Apache的apache用户)对Python安装目录、脚本存放目录有读取和执行权限
  • 确认Python路径、脚本路径无中文或特殊字符,避免路径解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:24:04