$available, 'unavailable' => $unavailable ]; } // 检测外部程序 function checkProgram($program, $versionCommand = '--version') { $result = [ 'available' => false, 'version' => '不可用', 'raw_output' => '' ]; // 使用escapeshellarg确保安全 $command = escapeshellcmd($program) . ' ' . $versionCommand . ' 2>&1'; $output = []; $returnCode = 0; // 尝试多种执行方式 if (function_exists('exec')) { @exec($command, $output, $returnCode); if ($returnCode === 0 && !empty($output) && !containsCommandNotFound($output)) { $result['available'] = true; $result['raw_output'] = implode("\n", $output); $result['version'] = $output[0]; return $result; } } if (function_exists('shell_exec')) { $output = @shell_exec($command); if (!empty($output) && !containsCommandNotFound($output)) { $result['available'] = true; $result['raw_output'] = $output; $result['version'] = strtok($output, "\n"); return $result; } } if (function_exists('system')) { ob_start(); @system($command, $returnCode); $output = ob_get_clean(); if ($returnCode === 0 && !empty($output) && !containsCommandNotFound($output)) { $result['available'] = true; $result['raw_output'] = $output; $result['version'] = strtok($output, "\n"); return $result; } } if (!empty($output)) { if (is_array($output)) { $result['raw_output'] = implode("\n", $output); $result['version'] = $output[0] ?? '未知错误'; } else { $result['raw_output'] = $output; $result['version'] = strtok($output, "\n"); } } return $result; } function containsCommandNotFound($output) { if (is_array($output)) { $output = implode(' ', $output); } return stripos($output, 'command not found') !== false || stripos($output, 'not recognized') !== false; } // 执行检测 $phpFunctions = checkPhpFunctions(); $python3 = checkProgram('python3', '--version'); $nodejs = checkProgram('node', '--version'); $npm = checkProgram('npm', '--version'); if ($python3['available']) { $primaryPython = $python3; $primaryPython['name'] = 'python3'; } else { $primaryPython = [ 'available' => false, 'version' => '不可用', 'name' => 'python3', 'raw_output' => '' ]; } ?>
全面检测服务器PHP、Python和Node.js环境状态
可用函数: 无可用函数
不可用函数: 无
| 程序 | 状态 | 版本信息 | 操作 |
|---|---|---|---|
| Python3 (python3) | 可用 不可用 |
Python版本: 未检测到Python3
| 程序 | 状态 | 版本信息 | 操作 |
|---|---|---|---|
| Node.js (node) | 可用 不可用 | ||
| NPM (npm) | 可用 不可用 |