![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/public_html/ |
<?php
// Check system requirements for OG image generation
header('Content-Type: application/json');
$requirements = [];
// Check PHP version
$requirements['php_version'] = PHP_VERSION;
// Check if GD library is available
$requirements['gd_available'] = extension_loaded('gd');
// Check GD info
$requirements['gd_info'] = false;
if ($requirements['gd_available']) {
$gd_info = gd_info();
$requirements['gd_info'] = !empty($gd_info);
$requirements['gd_details'] = $gd_info;
}
// Test if we can actually create images
$requirements['can_create_images'] = false;
if ($requirements['gd_available']) {
try {
$test_image = imagecreatetruecolor(100, 100);
if ($test_image) {
$requirements['can_create_images'] = true;
imagedestroy($test_image);
}
} catch (Exception $e) {
$requirements['image_error'] = $e->getMessage();
}
}
// Check file writing permissions
$requirements['can_write_files'] = is_writable(__DIR__);
// Check PHP configuration
$requirements['memory_limit'] = ini_get('memory_limit');
$requirements['max_execution_time'] = ini_get('max_execution_time');
$requirements['upload_max_filesize'] = ini_get('upload_max_filesize');
$requirements['post_max_size'] = ini_get('post_max_size');
// Check for recent errors
$requirements['recent_errors'] = [];
$error_log = ini_get('error_log');
if ($error_log && file_exists($error_log)) {
$log_content = file_get_contents($error_log);
if ($log_content) {
$lines = array_slice(explode("\n", $log_content), -10); // Last 10 lines
foreach ($lines as $line) {
if (strpos($line, 'error') !== false || strpos($line, 'Error') !== false) {
$requirements['recent_errors'][] = trim($line);
}
}
}
}
// Check specific GD functions
$requirements['gd_functions'] = [];
if ($requirements['gd_available']) {
$gd_functions = [
'imagecreatetruecolor',
'imagecolorallocate',
'imagefilledellipse',
'imagefilledrectangle',
'imageline',
'imagepng',
'imagedestroy',
'imagettftext',
'imagettfbbox'
];
foreach ($gd_functions as $func) {
$requirements['gd_functions'][$func] = function_exists($func);
}
}
// Check font availability
$requirements['fonts_available'] = [];
$font_paths = [
'/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
'/System/Library/Fonts/Arial.ttf',
'arial.ttf',
'/usr/share/fonts/TTF/arial.ttf'
];
foreach ($font_paths as $font_path) {
$requirements['fonts_available'][$font_path] = file_exists($font_path);
}
// Check if we can create a simple test image
$requirements['test_image_creation'] = false;
if ($requirements['can_create_images']) {
try {
$test_img = imagecreatetruecolor(200, 100);
$bg_color = imagecolorallocate($test_img, 102, 126, 234);
$text_color = imagecolorallocate($test_img, 255, 255, 255);
imagefill($test_img, 0, 0, $bg_color);
// Try to add text (if TTF fonts are available)
$font_path = null;
foreach ($font_paths as $path) {
if (file_exists($path)) {
$font_path = $path;
break;
}
}
if ($font_path && function_exists('imagettftext')) {
imagettftext($test_img, 20, 0, 10, 60, $text_color, $font_path, 'Test');
} else {
// Fallback to basic text
imagestring($test_img, 5, 10, 40, 'Test', $text_color);
}
$requirements['test_image_creation'] = true;
imagedestroy($test_img);
} catch (Exception $e) {
$requirements['test_image_error'] = $e->getMessage();
}
}
// Check server environment
$requirements['server_software'] = $_SERVER['SERVER_SOFTWARE'] ?? 'Unknown';
$requirements['php_sapi'] = php_sapi_name();
$requirements['document_root'] = $_SERVER['DOCUMENT_ROOT'] ?? __DIR__;
// Check for common issues
$requirements['common_issues'] = [];
if (!$requirements['gd_available']) {
$requirements['common_issues'][] = 'GD library is not installed or enabled';
}
if (!$requirements['can_create_images']) {
$requirements['common_issues'][] = 'Cannot create images even though GD is available';
}
if (!$requirements['can_write_files']) {
$requirements['common_issues'][] = 'Cannot write files to current directory';
}
if (empty(array_filter($requirements['fonts_available']))) {
$requirements['common_issues'][] = 'No TTF fonts found for text rendering';
}
// Provide solutions
$requirements['solutions'] = [];
if (!$requirements['gd_available']) {
$requirements['solutions'][] = 'Install GD library: sudo apt-get install php-gd (Ubuntu/Debian) or sudo yum install php-gd (CentOS/RHEL)';
$requirements['solutions'][] = 'Enable GD extension in php.ini: extension=gd';
$requirements['solutions'][] = 'Restart web server after installation';
}
if (!$requirements['can_write_files']) {
$requirements['solutions'][] = 'Check directory permissions: chmod 755 ' . __DIR__;
$requirements['solutions'][] = 'Check web server user permissions';
}
if (empty(array_filter($requirements['fonts_available']))) {
$requirements['solutions'][] = 'Install system fonts: sudo apt-get install fonts-dejavu (Ubuntu/Debian)';
$requirements['solutions'][] = 'Use a fallback font or create a simple image without text';
}
// Overall status
$requirements['overall_status'] = 'error';
if ($requirements['gd_available'] && $requirements['can_create_images']) {
$requirements['overall_status'] = 'success';
} elseif ($requirements['gd_available']) {
$requirements['overall_status'] = 'warning';
}
echo json_encode($requirements, JSON_PRETTY_PRINT);
?>