فشل PHP ftp_put: تحليل المشكلة وحلها
يمكن أن يكون عدم قدرة ftp_put() على العمل بشكل صحيح مشكلة محبطة عند النقل الملفات عبر بروتوكول نقل الملفات. في PHP، يكمن السبب الشائع لهذه المشكلة في الاستخدام الافتراضي للوضع النشط.
نقل الوضع النشط مقابل الوضع السلبي
يفرض الوضع النشط أن يتصل خادم FTP للعميل على المنفذ المحدد. ومن ناحية أخرى، فإن الوضع السلبي يجعل الخادم يستمع على منفذ عشوائي، والذي يتم توفيره بعد ذلك للعميل. في معظم الحالات، يكون استخدام الوضع الخامل ضروريًا، خاصة عندما يكون خادم FTP خلف جدار حماية أو NAT.حل المشكلةلتبديل نقل FTP الخاص بـ PHP إلى الوضع الخامل في الوضع، يجب على المرء استدعاء وظيفة
ftp_pasv():
$connect = ftp_connect($ftp) أو die("غير قادر على الاتصال بالمضيف"); ftp_login($connect, $username, $pwd) أو die("فشل التفويض"); // التبديل إلى الوضع السلبي ftp_pasv($connect, true) or die("غير قادر على التبديل إلى الوضع السلبي");$connect = ftp_connect($ftp) or die("Unable to connect to host");
ftp_login($connect, $username, $pwd) or die("Authorization failed");
// Switch to passive mode
ftp_pasv($connect, true) or die("Unable switch to passive mode");
في بعض الحالات، قد يقوم خادم FTP بالإبلاغ عن خطأ غير صحيح عنوان IP استجابة لأمر PASV. يمكن معالجة ذلك عن طريق تعطيل استخدام عنوان PASV:
ftp_set_option($connect, FTP_USEPASVADDRESS, false);ftp_set_option($connect, FTP_USEPASVADDRESS, false);
على الرغم من أن الحلول المذكورة أعلاه يمكن أن تخفف المشكلة، فإن الحل الأمثل هو تكوين خادم FTP لاستخدام عنوان IP الصحيح وتكوين المنفذ. وهذا يضمن التشغيل السليم في جميع السيناريوهات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3