2016-03-25 33 views
0

Bir dosyayı PHP üzerinden ProFTPD çalıştıran bir FTP sunucusuna yüklemeyi deniyorum. Bu daha önce bir çekicilik gibi çalıştı. Ben lftp yoluyla pasif modda değiştirmeye çalışırsanızFTP, PHP (ProFTPD) üzerinden çalışmıyor - Çalışmaya izin verilmiyor

Warning: ftp_put(): Unable to build data connection: Operation not permitted 

, o da çalışmıyor:

lftp [email protected]:/> quote PASV 
501 PASV: Operation not permitted 

$this->con = ftp_ssl_connect($CFG['BACKUP_FTP_HOST'], $port); 
ftp_login($this->con, $CFG['BACKUP_FTP_USER'], $CFG['BACKUP_FTP_PASSWORD']); 
ftp_pasv($this->con, true); // Returns true 
ftp_put($this->con, "/path/test.txt", __DIR__ . "/test.txt", FTP_ASCII); // Returns false, local file and remote directory exists (FTP_BINARY does not work also) 

birkaç komik PHP uyarı vardır: Bu kodudur

FEAT dönüşü aşağıdaki gibidir:

211-Features:     
SSCN 
SITE COPY 
LANG en-US.UTF-8*;en-US 
SIZE 
PROT 
CCC 
SITE MKDIR 
PBSZ 
AUTH TLS 
REST STREAM 
UTF8 
EPRT 
SITE SYMLINK 
EPSV 
SITE UTIME 
MDTM 
SITE RMDIR 
211 End 

FTP sunucusuyla ilgili bir sorun olduğunu düşünüyorum, ancak diğer sunucular yapılandırmayla birlikte çalışır. Ayrıca, FileZilla ile dosya yükleyebilirim. PHP ile aktif mod da çalışmıyor.

benim proftpd.conf içeriği:

# Includes DSO modules 
Include /etc/proftpd/modules.conf 

# If set on you can experience a longer connection delay in many cases. 
<IfModule mod_ident.c> 
IdentLookups     off 
</IfModule> 

ServerIdent      off 
ServerName      "FTP Server" 
ServerType      standalone 
DeferWelcome     off 

MultilineRFC2228    on 
DefaultServer     on 
ShowSymlinks     on 

TimeoutNoTransfer    600 
TimeoutStalled     600 
TimeoutIdle      1200 

DisplayLogin     welcome.msg 
DisplayChdir     .message true 
ListOptions      "-al" 

DenyFilter      \*.*/ 

# Use this to jail all users in their homes 
DefaultRoot      ~ 

# Allow continuation of uploads/downloads 
AllowRetrieveRestart   On 
AllowStoreRestart    On 

# Users require a valid shell listed in /etc/shells to login. 
# Use this directive to release that constrain. 
RequireValidShell    Off 

# Port 21 is the standard FTP port. 
Port       21 

# Workaround for nasty problem with FileZilla: 
<IfModule mod_facts.c> 
    FactsAdvertise off 
</IfModule> 

# Unlimited number of concurrent connections 
MaxClients      none 
MaxInstances     none 

# Unlimited number of concurrent connections per IP/user allowed 
MaxClientsPerHost    none 
MaxClientsPerUser    none 
PassivePorts 60000 65535 
<IfModule mod_tls.c> 
    TLSEngine On 

    # Support TLSv1 (no more SSLv3 due to POODLE attack) 
    TLSProtocol TLSv1 

    # Safe ciphers: 
    TLSCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
    # Are clients required to use FTP over TLS when talking to this server? 
TLSRequired on 
    # Server's certificate 
    TLSRSACertificateFile /etc/ssl/certs/proftpd.crt 
    TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key 
    TLSCertificateChainFile /etc/ssl/certs/proftpd-ca.crt 
    TLSDHParamFile /etc/proftpd/dhparams.pem 

    # Authenticate clients that want to use FTP over TLS? 
    TLSVerifyClient off 

</IfModule> 

# Virtual FTP users file 
AuthUserFile /etc/proftpd/passwd 

# Set the user and group that the server normally runs at. 
User       proftpd 
Group       nogroup 

# Umask 022 is a good standard umask to prevent new files and dirs 
# (second parm) from being group and world writable. 
Umask       022 022 
# Normally, we want files to be overwriteable. 
AllowOverwrite     on 
TransferLog /var/log/proftpd/xferlog 
SystemLog /var/log/proftpd/proftpd.log 
<IfModule mod_quotatab.c> 
QuotaEngine off 
</IfModule> 

<IfModule mod_ratio.c> 
Ratios off 
</IfModule> 

# Delay engine reduces impact of the so-called Timing Attack described in 
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02 
# It is on by default. 
<IfModule mod_delay.c> 
DelayEngine on 
</IfModule> 
<IfModule mod_ctrls.c> 
ControlsEngine  off 
ControlsMaxClients 2 
ControlsLog   /var/log/proftpd/controls.log 
ControlsInterval  5 
ControlsSocket  /var/run/proftpd/proftpd.sock 
</IfModule> 
<IfModule mod_ctrls_admin.c> 
AdminControlsEngine off 
</IfModule> 

# include additional configuration files 
Include /etc/proftpd/conf.d/*.conf 
# <EOF>----------------------------------------------------------------------- 
+0

Uhm, bu uzak dizin yolu doğru mu? /.../ test.txt'? –

+0

Tüm yolu kaldırdım. – Richard

+0

Ancak% 100 doğrudur ve yolu kopyalayıp FileZilla'ya yapıştırırsanız dizine girersiniz? –

cevap

1

Bir TLSLog dosyayı yapılandırmak ve orada kaydedilir ek olarak hangi bilgilerin görebilirsiniz. Ben şüpheli (ancak TLSLog, mod_tls'un veri aktarım bağlantınızın, kontrol bağlantısında kullanılanla aynı TLS oturumunu yeniden kullanmasını ve FTPS istemcinizin bunu yapmadığını doğruladığını doğrulayabilir). Bu gereksinim mod_tls konfigürasyonda aşağıdaki kullanarak rahat olabilir:

Bu seçenek hakkında daha fazla bilgi için
TLSOptions NoSessionReuseRequired 

, TLSOptions altındaki "NoSessionReuseRequired" açıklamasına bakın.

Bu yardımcı olur umarız!