PHP ile FTP durum kodlarını kontrol

3 Cevap php

Ben PEAR HTTP sınıfları kullanarak HTTP sunucularından tepkiler denetleyen bir komut dosyası var. Ancak, son zamanlarda komut FTP sunucuları (ve muhtemelen HTTP veya HTTPS değil bir şey) başarısız olduğunu tespit ettik. Google'ı denedim, ancak HTTP sunucuları dışındaki sunuculardan sunucu durumu kodunu döndürdü herhangi bir komut veya kod görmedim.

Nasıl PHP kullanarak bir haber veya FTP sunucusu durumunu öğrenebilirsiniz?

EDIT: Ben sadece bir FTP sunucusu ve ben belirtmek dizinden okuma yeteneği ilgileniyorum olduğunu açıklamak gerekir. Ben, vb Okumayı yetkili değilim, sunucu ölü / gitmiş olup olmadığını bilmek gerekir

Çoğu zaman ben dil agnostik değilim ancak, unutmayın, tüm web sitesi PHP-odaklı, yani bir PHP çözüm gelecekte sürdürülebilirlik ve genişletilebilirlik kolay için iyi olurdu.

3 Cevap

HTTP maalesef olsa biraz farklı FTP daha çalışır. Her iki tarayıcınızda aynı görünse de, HTTP (bunu erişmek için nasıl söyler tanımlayıcı, kaynak A erişmek için yani) URI temelini kapalı çalışır.

FTP tahrik çok eski okul sunucusudur. Eğer hala bir kullanıcı adı ve parola sağlamanız beri bile anonim FTP, kesmek biraz, sadece "anonim" ve e-posta adresiniz olarak tanımlanır.

Bir FTP sunucusu kontrol aracı up olup olmadığını kontrol etme

  1. Eğer FTP sunucusuna bağlanmak olabilir

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

  2. Eğer sunucuya giriş yapabilirsiniz ki:

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

  3. Ayrıca belirli bir sitenin açık olup olmadığını test etmek ulaşmak için gereken kaynakları yatan varsa Sonra, sonra da onlardan bir uygun olanı işlemini kullanın. örneğin Bir dosya üzerinde, belki ftp_nlist() çalıştığını görmek, ftp_mdtm() son değiştirilme zamanı veya bir dizine almak için kullanabilirsiniz.

Kendi rulo çalışırken daha yerleşik PHP FTP * işlevi kullanmak için kolay olmaz mıydı? URI sizin kontrolünüz dışındaki bir kaynaktan geliyorsa, kullanmak için hangi işlevleri belirlemek için protokolü tanımı (http:// veya ftp://, vb) kontrol etmek gerekir, ama bu oldukça saçmadır. Şimdi protokolü belirtilen varsa (gerçekten orada olmalı!) Daha sonra http varsayılan deneyebilirsiniz.

Belirli yanıtları okumak istiyorsanız size bir yuva açmaya ve manuel veri okuma / yazma gerekir.

<?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.