एक PHP स्क्रिप्ट के साथ एफ़टीपी स्थिति कोड की जांच

मेरे पास एक स्क्रिप्ट है जो पीईएआर HTTP कक्षाओं का उपयोग कर HTTP सर्वर से प्रतिक्रियाओं की जांच करती है। हालांकि, मैंने हाल ही में पाया है कि स्क्रिप्ट एफ़टीपी सर्वर (और शायद कुछ भी जो HTTP या HTTPS नहीं है) पर विफल हो जाती है। मैंने Google की कोशिश की, लेकिन किसी भी स्क्रिप्ट या कोड को नहीं देखा जो HTTP सर्वर के अलावा सर्वर से सर्वर स्थिति कोड लौटाता है।

मैं PHP का उपयोग कर न्यूज ग्रुप या एफ़टीपी सर्वर की स्थिति कैसे प्राप्त कर सकता हूं?

संपादित करें: मुझे यह स्पष्ट करना चाहिए कि मुझे केवल एक FTP सर्वर और निर्देशिका निर्दिष्ट करने की क्षमता में रुचि है। मुझे पता होना चाहिए कि क्या सर्वर मर चुका है या चला गया है, मैं पढ़ने के लिए अधिकृत नहीं हूं, इत्यादि।

कृपया ध्यान दें कि, हालांकि अधिकांश समय मैं भाषा अज्ञेयवादी हूं, पूरी वेबसाइट PHP संचालित है, इसलिए एक PHP समाधान भविष्य में रखरखाव और विस्तारशीलता के लिए सबसे अच्छा होगा।

0
ro fr bn

3 उत्तर

यदि आप विशिष्ट प्रतिक्रियाएं पढ़ना चाहते हैं तो आपको सॉकेट खोलना होगा और डेटा को मैन्युअल रूप से पढ़ना/लिखना होगा।

<?php
$sock = fsockopen($hostname, $port);
?>

Then you'll have to fput/fread data back and forth.
This will require you to read up on the FTP protocol.

0
जोड़ा

अपने आप को रोल करने की कोशिश करने से अंतर्निहित PHP एफ़टीपी * कार्यक्षमता का उपयोग करना आसान नहीं होगा? यदि यूआरआई आपके नियंत्रण के बाहर किसी स्रोत से आ रहा है, तो आपको यह निर्धारित करने के लिए प्रोटोकॉल परिभाषा (http://या ftp: //, आदि) की जांच करने की आवश्यकता होगी, लेकिन यह काफी छोटा है। यदि अब प्रोटोकॉल निर्दिष्ट है (वास्तव में होना चाहिए!) तो आप डिफ़ॉल्ट रूप से http पर आज़मा सकते हैं।

0
जोड़ा

दुर्भाग्यवश हालांकि HTTP एफ़टीपी से थोड़ा अलग काम करता है। यद्यपि दोनों आपके ब्राउज़र में समान दिख सकते हैं, HTTP यूआरआई के आधार पर काम करता है (यानी संसाधन ए तक पहुंचने के लिए, आपके पास एक पहचानकर्ता है जो आपको बताता है कि उसे कैसे पहुंचाया जाए)।

एफ़टीपी बहुत पुराने स्कूल सर्वर संचालित है। यहां तक ​​कि अज्ञात एफ़टीपी एक हैक का एक छोटा सा है, क्योंकि आप अभी भी एक उपयोगकर्ता नाम और पासवर्ड की आपूर्ति करते हैं, इसे सिर्फ "अज्ञात" और आपका ईमेल पता के रूप में परिभाषित किया गया है।

यह जांचना कि एक एफ़टीपी सर्वर ऊपर है या नहीं

  1. That you can connect to the FTP server

    if (!($ftpfd = ftp_connect($hostname))) { ... }

  2. That you can login to the server:

    if (!ftp_login($ftpfd, $username, $password)) { ... }

  3. Then, if there are further underlying resources that you need to access to test whether a particular site is up, then use an appropiate operation on them. e.g. on a file, maybe use ftp_mdtm() to get the last modified time or on a directory, see if ftp_nlist() works.

0
जोड़ा
यह ध्यान दिया जाना चाहिए कि, डिफ़ॉल्ट रूप से, इन FTP अनुप्रयोगों को सक्षम नहीं किया जाता है जब PHP संकलित किया जाता है, कम से कम उन सिस्टमों पर जिन्हें मैंने उपयोग किया था।
जोड़ा लेखक Thomas Owens, स्रोत