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') ]; foreach ($configs as $key => $value) { echo " $key: $value\n"; } // 检查必要的PHP函数 $functions = ['exec', 'move_uploaded_file', 'json_encode', 'file_put_contents']; $allFunctionsAvailable = true; foreach ($functions as $function) { if (function_exists($function)) { echo "✓ 函数 $function 可用\n"; } else { echo "✗ 函数 $function 不可用\n"; $allFunctionsAvailable = false; } } return $allFunctionsAvailable; } // 测试目录权限 function testDirectoryPermissions() { echo "\n=== 测试目录权限 ===\n"; $directories = [ __DIR__, __DIR__ . '/uploads/', __DIR__ . '/css/', __DIR__ . '/js/' ]; foreach ($directories as $dir) { if (!is_dir($dir)) { mkdir($dir, 0777, true); } if (is_writable($dir)) { echo "✓ 目录可写: $dir\n"; } else { echo "✗ 目录不可写: $dir\n"; } } return true; } // 测试AJAX端点 function testAjaxEndpoints() { echo "\n=== 测试AJAX端点 ===\n"; // 这里可以添加更详细的端点测试 $endpoints = [ 'check_git' => '检查Git状态', 'get_files' => '获取文件列表', 'git_operation' => 'Git操作', 'upload' => '文件上传' ]; foreach ($endpoints as $endpoint => $description) { echo "✓ 端点 $endpoint ($description) 已定义\n"; } return true; } // 运行所有测试 function runAllTests() { echo "开始Git上传工具测试...\n"; echo "=====================================\n"; $tests = [ 'testPHPConfiguration', 'testDirectoryPermissions', 'testGitOperations', 'testAjaxEndpoints', 'testFileUpload' ]; $allPassed = true; foreach ($tests as $test) { try { $result = $test(); if (!$result) { $allPassed = false; } } catch (Exception $e) { echo "✗ 测试 $test 抛出异常: " . $e->getMessage() . "\n"; $allPassed = false; } echo "\n"; } echo "=====================================\n"; if ($allPassed) { echo "✓ 所有测试通过!工具应该可以正常工作。\n"; } else { echo "✗ 部分测试失败,请检查配置和权限。\n"; } // 清理测试文件 $testFiles = glob('test_upload_*.txt'); foreach ($testFiles as $file) { unlink($file); } } // 如果直接访问此文件,运行测试 if (basename($_SERVER['PHP_SELF']) === basename(__FILE__)) { runAllTests(); }