2012-09-17 13 views
6

से PHP ftp_connect के साथ एफ़टीपी से कनेक्ट नहीं हो सकता है। मैं सेंटोस में अपने लोकहोस्ट अपाचे से एफ़टीपी के माध्यम से फ़ाइलों को डाउनलोड करने के लिए कुछ स्क्रिप्ट बनाने की कोशिश कर रहा हूं और मैं इसे काम नहीं कर सकता!स्थानीयहोस्ट

कोड मैं उपयोग कर रहा हूँ बहुत एक किसी भी बुनियादी एफ़टीपी अनुरोध द्वारा प्रयोग किया जाता है:

<?php 
$ip= FTP_IP_HERE; 
$port='21'; 
$timeout='90'; 
$un='username'; 
$pw='password'; 

// Connect to ftp 
$conn_id = ftp_connect($ip,$port,$timeout); 

// Open a session to an external ftp site 
$login_result = ftp_login ($conn_id, $un, $pw); 

// Check open 
if ((!$conn_id) || (!$login_result)) { 
    print "FTP connection failed!"; 
    exit(); 
} 

// turn on passive mode transfers 
if (ftp_pasv($conn_id, true) == FALSE) { 
    print "Passive FTP connection failed!"; 
    exit(); 
} 

मैं दूरस्थ सर्वर पर एक ही स्क्रिप्ट की कोशिश की और यह काम किया! मुझे यकीन नहीं है कि यह कोई अपाचे कॉन्फ़िगरेशन है, या एक PHP सीमा स्वयं ही है।

अद्यतन:

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 16 

Warning: ftp_get() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 22 
Falha ao enviar o arquivo test.pdf<br />Array 
(
    [type] => 2 
    [message] => ftp_get() expects parameter 1 to be resource, boolean given 
    [file] => /var/www/html/ftp/FTP.php 
    [line] => 22 
) 

Warning: ftp_close() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 30 

उत्तर

4

पहले सुनिश्चित करें कि यह अपने स्थानीय फ़ायरवॉल या कुछ के साथ कोई मुद्दा नहीं है बनाने:

यहाँ त्रुटि लॉग है। किसी भी अन्य उपकरण से एफ़टीपी की कोशिश करें, उदा।

wget --user=username --password='password' ftp://FTP_IP_HERE/file_to_download 

यदि wget भी कनेक्ट करने में विफल रहता है, तो यह आपकी नेटवर्क सेटिंग्स में एक समस्या है।

wget परीक्षण आप भी अपने कोड के शीर्ष पर इस रखकर क्या अपने PHP प्रयास के साथ गलत क्या है देखने के लिए वर्बोज़ त्रुटि रिपोर्टिंग सक्षम कोशिश कर सकते हैं गुजरता है:

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 

अंत में, यह भी प्रासंगिक हो सकती हैं अपने मामले: Cannot connect with FTP server with PHP , ftp_connect()

+0

मैं wget के साथ फ़ाइल डाउनलोड करने का परीक्षण से अधिक बनी रहती है और इसे डाउनलोड किया –

+0

मैं अपने त्रुटि लॉग को देखते हैं, तो ftp_connect अपने मामले में FALSE देता है। – Yuriy

+0

ftp.mozilla.org या किसी अन्य सार्वजनिक FTP सर्वर के साथ कोड में अपने सर्वर होस्ट/आईपी को प्रतिस्थापित करने का प्रयास करें और देखें कि यह खुलता है या नहीं। तो क्या आप अपने सर्वर आईपी के सामने 'ftp: //' का उपयोग कर रहे हैं? याद रखें कि इसकी आवश्यकता है, तो उस उपसर्ग के साथ और उसके बिना दोनों को आजमाएं। – Yuriy

1

कोशिश 'स्थानीय होस्ट' के स्थान पर '127.0.0.1'

ftp_connect('127.0.0.1', 21); 
9

ठीक है, मैं एक ही मुद्दा था और मैंने पाया मेरे मामले के लिए समाधान। दूसरों की मदद के लिए इसे यहां पोस्ट करना।

मेरी PHP स्क्रिप्ट विफल हो जाएगी लेकिन मैं कमांड लाइन के माध्यम से आसानी से एफ़टीपी कर सकता था। मैंने सत्यापित किया कि मेरी फ़ायरवॉल स्क्रिप्ट को अवरुद्ध नहीं कर रहा था और मुझे अपने लॉग में कोई PHP त्रुटियां नहीं मिल रही थीं ...

चारों ओर खोज करने के बाद, यह दिखाई दिया कि मेरी समस्या SELinux थी। मैं इसे बंद नहीं करना चाहता था इसलिए मैंने httpd_can_network_connect की स्थिति की जांच की।

चलाकर अपने स्थिति की जाँच करें:

getsebool httpd_can_network_connect 

तो आपको मिलेगा:

httpd_can_network_connect --> off 

यह आपकी समस्या हो सकती है।

नोट:

आप पहले से ही इस on है: ढूँढने

httpd_can_network_connect --> on 

या

SELinux is disabled 

तो इससे आपकी समस्या का हल करने के लिए नहीं जा रहा है ... गुड लक अपने उपाय।

फिक्स

चलाकर httpd_can_network_connect सक्षम करें:

setsebool httpd_can_network_connect=1 

फिर से अपनी स्क्रिप्ट का परीक्षण करें और देखें कि क्या यह काम करता है। यह मेरे लिए काम करता है इसलिए मैंने इसे सक्षम रखने के लिए नीति सेट करना सुनिश्चित किया।

setsebool -P httpd_can_network_connect=1 

नोट: -P नीति निर्धारित करता है, तो यह एक रिबूट

+1

यह। धन्यवाद जेरेमी, इसने मेरी समस्या को हल किया। – Scorchio

+1

धन्यवाद। काम के घंटों को कहीं नहीं मिला और यह फिर से selinux लानत था! – user1017063

+1

स्वीट जेबस! यह मेरी समस्या को ठीक करता है साथ ही मैं मोटी महसूस नहीं करता .. – Sam

संबंधित मुद्दे