ここでは、PHP のスクリプトファイル内で FTP 関数を使用し、コマンドライン上で実行できるようにする方法について掲載しています。最後にボヤキ少々のおまけ(メイン)付です。
スポンサーリンク
FTP 関数は Web ではデフォルトで使用可能だが
PHP5 以降では FTP は コアに組み込まれているため、コンパイル時に特に configure オプションを指定しなくとも利用可能となっています。しかし、PHP スクリプトをコマンドライン上で実行し FTP 関数を実行すると、以下のようにエラーが発生します。
PHP Fatal error: Call to undefined function ftp_connect() in ・・・
why not?
コマンドライン上で FTP 関数を使用する
コマンドラインで実行するスクリプトから FTP 関数を使用するには PHP5 でも以前のバージョンと同じく、configure オプションで –enable-ftp を 指定してコンパイルする必要があります。
PHP マニュアルより
Windows 版の PHP 7.0.0 以降は、この拡張モジュールが共有モジュールとしてビルドされるようになりました。 これらの関数を使うには、php.ini でモジュールを有効にする必要があります。
※ Solaris10 で動作を確認
※ apache などの WEB サーバーの一部として動作させる場合は、リコンパイルは不要
参考
「FTP は使うな!」と言われて早何年?
そういえば、「 FTP は(特に)セキュリティ的な面で使わないほうが良い 」 と言う話は聞いたことがあると思います。わたしも聞いたことがありますが、細かいことは知りません。例えば次のようなモノだったと思います。
- FTP には脆弱性があるぞー
- 暗号化されてないぞー
- ファイルの転送の完了を厳密には判定できないぞー
- あの管理職は仕事しろよー(便所で何時間新聞読んでんだよ!)
しかし、今でも(これから新規開発するシステムでも) FTP は普通に使われます。何故でしょうか?
- 権限持ってる人がFTPしか知らない
- 特別FTPで困ることはない
こんな感じだと思います。
また、FTPしか知らない(それ以外知ろうとしない)人の言い分としては、「 過去の資産を活用して工期短縮 」 「 内部システムなのでセキュリティは問題ない 」 「 枯れた技術なので安心 」 など口当たりの良いことを言いますが、すべて詭弁です。
まあ、聞き飽きましたので今では何の感情もわかなくなりましたけどね。