| Current Path : /var/www/cesa.co.za/crons/ |
| Current File : /var/www/cesa.co.za/crons/wp-diagnostic.php |
<?php
// Start output buffering
ob_start();
// Basic error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo "=== WordPress Diagnostic Test ===\n";
echo "PHP Version: " . phpversion() . "\n";
echo "Current directory: " . getcwd() . "\n";
// Set document root
if (!isset($_SERVER['DOCUMENT_ROOT']) || strlen($_SERVER['DOCUMENT_ROOT']) <= 0) {
$_SERVER['DOCUMENT_ROOT'] = str_replace('/crons', '', getcwd());
}
echo "Document root: " . $_SERVER['DOCUMENT_ROOT'] . "\n";
// Check wp-config.php first
$wp_config_path = $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php';
if (file_exists($wp_config_path)) {
echo "✓ wp-config.php found\n";
// Read wp-config.php to extract database settings
$wp_config_content = file_get_contents($wp_config_path);
// Extract database settings using regex
preg_match("/define\(\s*'DB_HOST',\s*'([^']+)'\s*\)/", $wp_config_content, $db_host_match);
preg_match("/define\(\s*'DB_USER',\s*'([^']+)'\s*\)/", $wp_config_content, $db_user_match);
preg_match("/define\(\s*'DB_NAME',\s*'([^']+)'\s*\)/", $wp_config_content, $db_name_match);
preg_match("/define\(\s*'DB_PASSWORD',\s*'([^']*)'\s*\)/", $wp_config_content, $db_password_match);
if ($db_host_match && $db_user_match && $db_name_match) {
$db_host = $db_host_match[1];
$db_user = $db_user_match[1];
$db_name = $db_name_match[1];
$db_password = $db_password_match[1] ?? '';
echo "✓ Database settings extracted from wp-config.php:\n";
echo " Host: $db_host\n";
echo " User: $db_user\n";
echo " Database: $db_name\n";
echo " Password: " . (strlen($db_password) > 0 ? "***" : "empty") . "\n";
// Test database connection directly
echo "\n=== Testing Database Connection ===\n";
try {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "✓ Database connection successful\n";
// Test a simple query
$stmt = $pdo->query("SELECT COUNT(*) as count FROM wp_posts");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "✓ Database query successful - Found " . $result['count'] . " posts\n";
} catch (PDOException $e) {
echo "✗ Database connection failed: " . $e->getMessage() . "\n";
}
} else {
echo "✗ Could not extract database settings from wp-config.php\n";
}
} else {
echo "✗ wp-config.php not found\n";
exit(1);
}
// Check for common WordPress issues
echo "\n=== Checking WordPress Files ===\n";
$wp_files = [
'wp-load.php',
'wp-settings.php',
'wp-config.php',
'wp-includes/wp-db.php',
'wp-includes/load.php'
];
foreach ($wp_files as $file) {
$full_path = $_SERVER['DOCUMENT_ROOT'] . '/' . $file;
if (file_exists($full_path)) {
echo "✓ $file found\n";
} else {
echo "✗ $file missing\n";
}
}
// Check file permissions
echo "\n=== Checking File Permissions ===\n";
$wp_load_path = $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';
if (file_exists($wp_load_path)) {
$perms = fileperms($wp_load_path);
echo "wp-load.php permissions: " . substr(sprintf('%o', $perms), -4) . "\n";
if (is_readable($wp_load_path)) {
echo "✓ wp-load.php is readable\n";
} else {
echo "✗ wp-load.php is not readable\n";
}
}
// Try to load WordPress with a timeout
echo "\n=== Attempting WordPress Load with Timeout ===\n";
// Set a short timeout
set_time_limit(10);
// Try to load WordPress with error suppression
try {
// Suppress warnings to see if there are specific errors
$old_error_reporting = error_reporting();
error_reporting(E_ERROR | E_PARSE);
echo "Loading wp-load.php...\n";
require_once($wp_load_path);
// Restore error reporting
error_reporting($old_error_reporting);
echo "✓ WordPress loaded successfully\n";
// Test basic functions
if (function_exists('get_post_meta')) {
echo "✓ get_post_meta function available\n";
} else {
echo "✗ get_post_meta function not available\n";
}
} catch (Exception $e) {
echo "✗ Exception loading WordPress: " . $e->getMessage() . "\n";
} catch (Error $e) {
echo "✗ Fatal error loading WordPress: " . $e->getMessage() . "\n";
}
echo "\n=== Diagnostic completed ===\n";
// Flush output buffer
ob_end_flush();