query("SELECT init_value FROM osurg_initials WHERE init_parameter='sync_peer_ip'")->fetchColumn() ?: $ip; $port = (int)($pdo->query("SELECT init_value FROM osurg_initials WHERE init_parameter='ftp_port'")->fetchColumn() ?: $port); $user = $pdo->query("SELECT init_value FROM osurg_initials WHERE init_parameter='ftp_user'")->fetchColumn() ?: $user; $pass = $pdo->query("SELECT init_value FROM osurg_initials WHERE init_parameter='ftp_pass'")->fetchColumn() ?: $pass; } catch (\Throwable $e) {} } if (!$ip) { echo "ERROR: IP سیستم مطب مشخص نیست.\n"; echo "Usage: php test-ftp.php 192.168.1.X\n"; exit(1); } echo "==========================================\n"; echo " تست FTP سیستم مطب\n"; echo "==========================================\n"; echo "IP : {$ip}\n"; echo "Port : {$port}\n"; echo "User : {$user}\n\n"; echo "[1] بررسی پورت {$port}... "; $sock = @fsockopen($ip, $port, $errno, $errstr, 5); if ($sock) { fclose($sock); echo "باز است ✓\n"; } else { echo "بسته است ✗ ({$errstr})\n"; echo "\n=> FTP server روی سیستم مطب اجرا نیست.\n"; echo " scripts\\start-ftp-server.vbs یا install.bat را اجرا کن.\n"; exit(1); } echo "[2] اتصال FTP... "; $ftp = @ftp_connect($ip, $port, 10); if (!$ftp) { echo "ناموفق ✗\n"; exit(1); } echo "موفق ✓\n"; // ---- تست 3: لاگین ---- echo "[3] ورود با {$user}... "; if (!@ftp_login($ftp, $user, $pass)) { echo "ناموفق ✗ (کاربر یا رمز اشتباه)\n"; ftp_close($ftp); exit(1); } echo "موفق ✓\n"; echo "[4] Passive mode... "; ftp_pasv($ftp, true); echo "OK ✓\n"; echo "[5] لیست پوشه اصلی... "; $list = @ftp_nlist($ftp, '/'); if ($list !== false) { echo "موفق ✓ (" . count($list) . " آیتم)\n"; } else { echo "خالی یا خطا\n"; } echo "[6] ارسال فایل تست... "; $tmpLocal = tempnam(sys_get_temp_dir(), 'ftp_test_'); file_put_contents($tmpLocal, 'FTP test from ' . gethostname() . ' at ' . date('Y-m-d H:i:s')); if (@ftp_put($ftp, '/ftp_test.txt', $tmpLocal, FTP_BINARY)) { echo "موفق ✓\n"; @ftp_delete($ftp, '/ftp_test.txt'); echo "[6] پاکسازی فایل تست... OK ✓\n"; } else { echo "ناموفق ✗ (مشکل دسترسی به پوشه)\n"; } unlink($tmpLocal); ftp_close($ftp); echo "\n==========================================\n"; echo " همه تست‌ها موفق بودن! FTP آماده است.\n"; echo "==========================================\n";