本文目录导读:

我来为你详细介绍PHP环境检测的多种方法:
基础环境检测函数
使用 phpinfo()
<?php phpinfo(); // 显示所有PHP配置信息 ?>
使用 phpversion()
<?php echo "PHP版本: " . phpversion(); // 输出: PHP版本: 8.1.12 ?>
创建检测页面
创建一个 phpinfo.php 文件:
<?php
echo "=== PHP环境检测 ===\n\n";
// 1. PHP版本
echo "1. PHP版本: " . phpversion() . "\n\n";
// 2. 操作系统
echo "2. 操作系统: " . PHP_OS . "\n\n";
// 3. 服务器软件
echo "3. 服务器软件: " . ($_SERVER['SERVER_SOFTWARE'] ?? '未知') . "\n\n";
// 4. 文档根目录
echo "4. 文档根目录: " . ($_SERVER['DOCUMENT_ROOT'] ?? '未知') . "\n\n";
// 5. PHP配置文件路径
echo "5. PHP配置文件: " . php_ini_loaded_file() . "\n\n";
// 6. 扩展检测
echo "6. 已加载扩展:\n";
$extensions = get_loaded_extensions();
echo " 总数: " . count($extensions) . "\n";
echo " " . implode(", ", $extensions) . "\n\n";
?>
常用环境检测代码
完整的环境检测脚本
<?php
class EnvironmentCheck {
private $results = [];
private $passed = 0;
private $failed = 0;
public function run() {
$this->checkPHPVersion();
$this->checkExtensions();
$this->checkDirectories();
$this->checkUploadSettings();
$this->displayResults();
}
private function checkPHPVersion() {
$requiredVersion = '7.4';
$currentVersion = phpversion();
if (version_compare($currentVersion, $requiredVersion, '>=')) {
$this->addResult('PHP版本', $currentVersion . ' ✓', true);
} else {
$this->addResult('PHP版本', $currentVersion . ' ✗ (需要 ' . $requiredVersion . '+)', false);
}
}
private function checkExtensions() {
$requiredExtensions = ['pdo', 'mbstring', 'json', 'gd', 'curl'];
echo "必要扩展检查:\n";
foreach ($requiredExtensions as $ext) {
if (extension_loaded($ext)) {
$this->addResult($ext . ' 扩展', '已加载 ✓', true);
} else {
$this->addResult($ext . ' 扩展', '未加载 ✗', false);
}
}
}
private function checkDirectories() {
$dirs = ['/tmp', '/var/www/html', sys_get_temp_dir()];
echo "\n目录检查:\n";
foreach ($dirs as $dir) {
if (is_dir($dir) && is_writable($dir)) {
$this->addResult($dir, '可写 ✓', true);
} else {
$this->addResult($dir, '不可写或不存在 ✗', false);
}
}
}
private function checkUploadSettings() {
$settings = [
'upload_max_filesize' => ini_get('upload_max_filesize'),
'post_max_size' => ini_get('post_max_size'),
'max_execution_time' => ini_get('max_execution_time') . '秒',
'memory_limit' => ini_get('memory_limit')
];
echo "\nPHP设置检查:\n";
foreach ($settings as $key => $value) {
$this->addResult($key, $value, true);
}
}
private function addResult($name, $value, $status) {
$this->results[] = [
'name' => $name,
'value' => $value,
'status' => $status
];
if ($status) {
$this->passed++;
} else {
$this->failed++;
}
}
private function displayResults() {
echo "=========================\n";
echo " PHP环境检测结果\n";
echo "=========================\n\n";
foreach ($this->results as $result) {
echo $result['status'] ? "✅ " : "❌ ";
echo $result['name'] . ": " . $result['value'] . "\n";
}
echo "\n=========================\n";
echo "通过: $this->passed / 失败: $this->failed\n";
echo "=========================\n";
}
}
// 运行检测
$check = new EnvironmentCheck();
$check->run();
?>
检测常见Web服务器
<?php
function checkWebServer() {
$server = $_SERVER['SERVER_SOFTWARE'] ?? '未知';
$checks = [
'Apache' => strpos($server, 'Apache') !== false,
'Nginx' => strpos($server, 'nginx') !== false,
'IIS' => strpos($server, 'IIS') !== false,
'PHP内置服务器' => php_sapi_name() === 'cli-server'
];
echo "Web服务器: $server\n";
foreach ($checks as $name => $result) {
echo ($result ? "✅" : "❌") . " $name\n";
}
}
// 执行检测
checkWebServer();
?>
命令行动态检测
在终端执行:
# 查看PHP版本 php -v # 查看已安装的扩展 php -m # 查看PHP配置 php -i | grep "Loaded Configuration File" # 测试基本功能 php -r "echo phpversion();"
安全性检测
<?php
function securityCheck() {
$issues = [];
// 检查错误显示
if (ini_get('display_errors')) {
$issues[] = "⚠️ 错误显示已开启(生产环境建议关闭)";
}
// 检查注册全局变量(7.0+已废弃)
if (ini_get('register_globals')) {
$issues[] = "❌ register_globals 已启用(安全风险)";
}
// 检查allow_url_fopen
if (ini_get('allow_url_fopen')) {
$issues[] = "⚠️ allow_url_fopen 已启用";
}
// 检查危险函数
$dangerous = ['exec', 'system', 'passthru', 'shell_exec'];
foreach ($dangerous as $func) {
if (function_exists($func)) {
$issues[] = "⚠️ 危险函数 {$func}() 可用";
}
}
return $issues;
}
$securityIssues = securityCheck();
echo "\n安全检测结果:\n";
foreach ($securityIssues as $issue) {
echo $issue . "\n";
}
?>
专业检测工具
使用Composer包:
# 安装检测工具 composer require --dev phpunit/phpunit # 使用symfony/phpunit-bridge composer require --dev symfony/phpunit-bridge
可视化检测页面示例
创建一个 check.php:
<!DOCTYPE html>
<html>
<head>PHP环境检测</title>
<style>
.pass { color: green; }
.fail { color: red; }
.info { background: #f5f5f5; padding: 10px; margin: 5px; }
</style>
</head>
<body>
<h1>PHP环境检测</h1>
<?php
$checks = [
'PHP版本 >= 7.4' => version_compare(phpversion(), '7.4.0', '>='),
'PDO扩展' => extension_loaded('pdo'),
'MySQL扩展' => extension_loaded('mysqli'),
'GD扩展' => extension_loaded('gd'),
'CURL扩展' => extension_loaded('curl'),
'JSON扩展' => extension_loaded('json'),
'MBString扩展' => extension_loaded('mbstring'),
'文件上传支持' => ini_get('file_uploads'),
'SESSION支持' => extension_loaded('session')
];
foreach ($checks as $name => $result):
?>
<div class="info">
<strong><?= $name ?>:</strong>
<span class="<?= $result ? 'pass' : 'fail' ?>">
<?= $result ? '✅ 通过' : '❌ 失败' ?>
</span>
</div>
<?php endforeach; ?>
<p><strong>PHP运行模式:</strong> <?= php_sapi_name() ?></p>
</body>
</html>
这些方法可以帮助你全面了解PHP的运行环境和配置,根据实际需求选择合适的方法进行检测即可。