本文目录导读:

我理解您可能想询问“PHP 健康传输”相关的内容,这通常指的是HTTPS 安全传输或 PHP 应用的健康检查机制,我为您分别解释两种常见场景:
PHP 启用 HTTPS 安全传输
如果是指 健康/安全的 HTTP 传输(HTTPS):
检查是否已启用 HTTPS
function isHttps() {
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
return true;
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
return true;
} elseif (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && $_SERVER['HTTP_FRONT_END_HTTPS'] !== 'off') {
return true;
}
return false;
}
强制跳转 HTTPS
if (!isHttps()) {
$redirectUrl = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('Location: ' . $redirectUrl, true, 301);
exit();
}
设置安全的 HTTP 头
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: DENY');
header('Content-Security-Policy: default-src \'self\'');
PHP 应用健康检查
如果是指 应用程序的健康状态监控:
简单的健康检查端点
// health.php
header('Content-Type: application/json');
$health = [
'status' => 'OK',
'timestamp' => date('c'),
'services' => [
'database' => checkDatabase(),
'cache' => checkCache(),
'disk' => checkDiskSpace()
]
];
echo json_encode($health);
function checkDatabase() {
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$pdo->query('SELECT 1');
return ['status' => 'OK', 'message' => 'Connected'];
} catch (PDOException $e) {
return ['status' => 'ERROR', 'message' => $e->getMessage()];
}
}
function checkCache() {
if (extension_loaded('redis')) {
try {
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->ping();
return ['status' => 'OK', 'message' => 'Redis connected'];
} catch (Exception $e) {
return ['status' => 'ERROR', 'message' => $e->getMessage()];
}
}
return ['status' => 'WARNING', 'message' => 'Redis not configured'];
}
function checkDiskSpace() {
$freeSpace = disk_free_space('/');
$totalSpace = disk_total_space('/');
$usedPercent = (($totalSpace - $freeSpace) / $totalSpace) * 100;
return [
'status' => $usedPercent > 90 ? 'WARNING' : 'OK',
'free_gb' => round($freeSpace / 1073741824, 2),
'used_percent' => round($usedPercent, 2)
];
}
使用 cURL 进行健康检查
function checkUrlHealth($url, $timeout = 5) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => $timeout,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_NOBODY => true,
CURLOPT_HEADER => true
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
return [
'url' => $url,
'http_code' => $httpCode,
'healthy' => $httpCode >= 200 && $httpCode < 400,
'error' => $error
];
}
最佳实践建议
nginx 配置 HTTPS
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
PHP-FPM 健康检查
; php-fpm.conf pm.status_path = /status ping.path = /ping ping.response = pong
如果您的需求更具体,请补充说明,我会针对性地提供解决方案。