PHP でのフォルダにファイルを移動する
この記事では、あるフォルダから別のフォルダにファイルを移動する方法について説明します。トリッキーに見えるかもしれませんが、そうするのはとても簡単です。必要なのは、PHP のネイティブ関数 rename
を練習することだけです。その名前は、ファイルまたはディレクトリの名前を変更することで機能することを意味します。最初は混乱するかもしれませんが、ファイルのパスの名前を変更すると、最終的には新しい場所に移動します。
PHP で rename()
関数を使用してファイルを別のフォルダーに移動する
rename
関数を使用するには、移動するファイルのソースと宛先の場所を指定する必要があります。ソースの場所はファイルが保存されている現在のディレクトリであり、宛先の場所はファイルを移動する場所です。例を使って話し合いましょう!
source_directory
と dest_directory
という名前の 2つのディレクトリがあるとします。source_directory
に move-test.txt
というファイルがあり、PHP を使用して dest_directory
に移動したいと考えています。
次のコードを見てみましょう。
<?php
$currentLocation = 'source_directory/move-test.txt';
$newLocation = 'dest_directory/move-test.txt';
$moved = rename($currentLocation, $newLocation);
if($moved)
{
echo "File moved successfully";
}
?>
上記コードの説明は以下のとおりです。
- ファイルの現在のパスは、最初に変数
$currentLocation
を使用して指定されます。 - 次に、ファイル名とともに新しい場所を指定します。簡単に言うと、ファイルの移動先となる新しい場所です。
- ファイルに別の名前を付けたい場合は、変数
$newLocation
のファイル名move-test.txt
を新しいファイル名に変更することで実行できます。 - 名前変更関数は、操作を移動する前のファイルパス用の
$currentLocation
と目的の場所に正常に移動した後の新しいファイルパス用の$newLocation
の 2つのパラメーターを取ります。
重要な考慮事項
移動操作が成功すると、rename
関数は TRUE
を返します。ここで注意すべき 2つの重要な点は次のとおりです。
- 移動するファイルが存在している必要があります。移動しようとしているファイルが存在していることを確認する必要があります。それ以外の場合は、
The system cannot find the file specified.
という警告をスローします。 - 既存のファイルを上書きできます。名前変更機能により、既存のファイルが上書きされる可能性があります。つまり、
$newLocation
が既存のファイルの名前である場合、名前変更機能を使用した移動操作の後、既存のファイルが上書きされます。
ファイルが存在するかどうかを確認するには
別のフォルダに移動する前にファイルが存在するかどうかを確認するには、PHP が提供する is_file
関数を使用できます。
is_file
関数を使用してファイルが存在するかどうかを確認するコード例は次のとおりです。
<?php
$currentLocation = 'source_directory/move-test.txt';
$newLocation = 'dest_directory/move-test.txt';
if(is_file($currentLocation))
{
$moved = rename($currentLocation, $newLocation);
}
if($moved)
{
echo "File moved successfully";
}
?>
上記の例では、is_file($currentLocation)
を使用して、移動操作を実行する名前変更関数を呼び出す前に、移動するファイルが存在するかどうかを確認します。
ファイルが上書きされていないかどうかを確認するには
次のコード例では、ファイルをある場所から別の場所に移動するときに既存のファイルが上書きされないようにする方法について説明します。
<?php
$currentLocation = 'source_directory/move-test.txt';
$newLocation = 'dest_directory/move-test.txt';
if(!is_file($newLocation))
{
$moved = rename($currentLocation, $newLocation);
}
if($moved)
{
echo "File moved successfully";
}
?>
上記の例では、is_file($newLocation)
を使用して、rename
関数が呼び出されたときに上書きされる可能性のある別のファイルが存在するかどうかを確認します。