PHPファイルがある場所とFTPサーバーが同じ場合、FTPサーバーに接続するときに次のようなエラーが出る。
Warning: ftp_login() expects parameter 1 to be resource, boolean given in 【PHPファイルのパス】 on line 【エラー行】
このときサーバー名を『127.0.0.1』にすると解決する。
PHPでFTPが使えるかどうかはphpinfo()で確認する。
ftp
FTP support | enabled |
上でdisableとなっていた場合は--enable-ftpを付けてコンパイル、インストールをしなおす。
以下はFTP操作のまとめ
FTPサーバーに接続する
$ftp_server="【サーバー名】";
$ftp_user_name="【アカウント名】";
$ftp_user_pass="【パスワード】";
//サーバーに接続する
$conn_id = ftp_connect($ftp_server);
// ユーザ名とパスワードでログインする
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 接続できたか確認する
if ((!$conn_id) || (!$login_result)) {
echo "FTP接続に失敗しました。";
exit;
} else {
echo "FTP接続に成功しました。";
}
$ftp_user_name="【アカウント名】";
$ftp_user_pass="【パスワード】";
//サーバーに接続する
$conn_id = ftp_connect($ftp_server);
// ユーザ名とパスワードでログインする
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 接続できたか確認する
if ((!$conn_id) || (!$login_result)) {
echo "FTP接続に失敗しました。";
exit;
} else {
echo "FTP接続に成功しました。";
}
ファイルをアップロードする(テキストファイル、HTMLファイルなど)
$local_file="【ローカルのファイルパス】";
$remote_file="【FTPサーバー上のアップロードファイルパス】";
if (!ftp_put($conn_id, $remote_file, $local_file, FTP_ASCII)) {
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}
$remote_file="【FTPサーバー上のアップロードファイルパス】";
if (!ftp_put($conn_id, $remote_file, $local_file, FTP_ASCII)) {
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}
ファイルをアップロードする(画像など)
$local_file="【ローカルのファイルパス】";
$remote_file="【FTPサーバー上のアップロードファイルパス】";
if (!ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) {
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}
$remote_file="【FTPサーバー上のアップロードファイルパス】";
if (!ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) {
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}
パーミッションを変更する(例: 644 )
$remote_file="【FTPサーバー上のファイルパス】";
if (!ftp_chmod($conn_id, 0644, $remote_file)) {
echo "FTPパーミッションの変更に失敗しました。";
} else {
echo "FTPパーミッションの変更に成功しました。";
}
if (!ftp_chmod($conn_id, 0644, $remote_file)) {
echo "FTPパーミッションの変更に失敗しました。";
} else {
echo "FTPパーミッションの変更に成功しました。";
}
ファイルを削除する
$remote_file="【FTPサーバー上のファイルパス】";
if (!ftp_delete($conn_id, $remote_file)) {
echo "FTPファイルの削除に失敗しました。";
exit;
} else {
echo "FTPファイルの削除に成功しました。";
}
if (!ftp_delete($conn_id, $remote_file)) {
echo "FTPファイルの削除に失敗しました。";
exit;
} else {
echo "FTPファイルの削除に成功しました。";
}
接続を閉じる
ftp_close($conn_id);