2011-10-19 4 views
0

ftp関数を使用して自分のサーバにログインし、簡単に素早くバックアップするPHPスクリプトがありますが、スクリプトを実行する方法が見つからないようですメインインデックスファイルが置かれているフォルダを特定します。phpのftp関数を使用してpublic htmlフォルダを見つける

たとえば、私には6台のサーバーがあり、すべてのFTPアカウントがすべて異なって設定されています。 httpdocs/httpsdocs/public_html/error_docs/sub_domainsとそのようなフォルダを持つFTPルートにログインするものもあれば、インデックスファイルがあるhttpdocsに直接ログインするものもあります。私は主な作業用Webファイルをバックアップしたいだけで、そこにあるかもしれない他のものはすべてバックアップしたくないです

私は作業ディレクトリを定義する方法を設定しましたが、それは各サーバまたは私がしたいバックアップ。

PHPスクリプトでメインのWebディレクトリを見つけたり、動かすことはできますか? 1つのオプションは、ディレクトリを使用するデータベースを設定することです。ftpがそのディレクトリに直接ログインする場合は何も表示されませんが、ここでは自動化を行います。

もし私がデータベースオプションに行くことはできません。

答えて

0

いいえ、それぞれのドメインに対してApacheがどのように設定されているかを知らなくても、それを確実に実行することはできません。あなたはデータベース/設定ファイルのルートを使うほうが良いでしょう。サイトの追加/変更/削除のための1回限りのセットアップコストと、メンテナンスの10年分を要します。

おそらく、検出器スクリプトを取得するのに数日を費やすことになり、次回未知の構成が次回に発生すると失敗します。 AIを作成しようとするのは難しいです...あなたはArtificial Stupidityのレベル(例えば、MS Paperclip)にそれを取得しなければなりません。

+0

ねえ、[Clippyは](http://en.wikipedia.org/wiki/Clippy)クールでした。あんまり。 –

2

httpd.confを取得して解析しない限り、Apacheで設定されているルートディレクトリがFTPだけであるかどうかはわかりませんが、私はあなたがしたくないと確信しています。おそらく、同じスクリプトを使って複数のサーバーからこのバックアップを実行するようにループしていますか?

もしそうなら、配列内のすべてを定義し、それをforeachでループすれば、すべての関連データが各繰り返しで利用可能になります。

だから私はこのような何かをするだろう:

// This will hold all our configuration 
$serverData = array(); 

// First server 
$serverData['server1']['ftp_address'] = 'ftp://11.22.33.44/'; 
$serverData['server1']['ftp_username'] = 'admin'; 
$serverData['server1']['ftp_password'] = 'password'; 
$serverData['server1']['root_dir'] = 'myuser/public_html'; 

// Second server 
$serverData['server2']['ftp_address'] = 'ftp://11.22.22.11/'; 
$serverData['server2']['ftp_username'] = 'root'; 
$serverData['server2']['ftp_password'] = 'hackmeplease'; 
$serverData['server2']['root_dir'] = 'myuser/public_html'; 

// ...and so on 
// Of course, you could also query a database to populate the $serverData array 

foreach ($serverData as $server) { 

    // Process each server - all the data is available in $server['ftp_address'], $server['root_dir'] etc etc 

} 
関連する問題