目次
PHP スクリプトのテスト方法と例" >PHP スクリプトのテスト方法と例
ホームページ バックエンド開発 PHPチュートリアル PHP でファイルをコピーおよび移動するためのヒント

PHP でファイルをコピーおよび移動するためのヒント

Jun 08, 2018 am 09:55 AM
php コピー移動 書類

この記事では主に PHP でのファイルのコピーと移動のテクニックを紹介します。興味のある方はぜひ参考にしてください。

elFinder を模倣して主要メンバー メソッドを抽出する簡単な例

実装された関数は次のとおりです:

複数のファイルのコピーまたは移動操作を実現します

注:テストを容易にするために、一部の判決は簡単に処理されています。そして、プログラムファイル
が存在するディレクトリに、宛先フォルダとして新しいテスト フォルダが生成されます。実際に使用する場合には改造が必要となります。
copy.php ファイルは次のとおりです:

<?php
/**
 * 复制/移动操作简单示例 : >PHP5
 *
 */
/**
 * 判断文件是否存在
 *
 */
function _isFind($filename) {
  return @file_exists($filename);
}
/**
 * 判断文件夹是否存在? 简单处理: 仅对根目录进行判断
 *
 */
function _isFindDir($dir) {
  $ls = scandir(dirname(__FILE__));
  foreach ($ls as $val) {
    if ($val == $dir) return TRUE;
  }
  return FALSE;
}
/**
 * 复制或移动
 *
 * @param  array  源文件夹数组: 简单处理:采用文件名作为元素值
 * @param  string 目的文件夹
 * @param  string 操作数: move - 移动 ; copy - 复制
 * @return bool
 */
function _copy_move($src = array(), $dst = &#39;&#39;, $op = &#39;move&#39;) {
  if ( ! is_array($src)) {
    $src = array($src);
  }
  //判断源文件是否存在?
  foreach ($src as $val) {
    if ( _isFind($val) === FALSE) {
      return _log(&#39;Src file not find&#39;, $val);
    }
  }
  //判断目的文件夹是否存在? 如果不存在就生成
  //简单处理: 实际应用需要修改
  if (_isFindDir($dst) === FALSE) {
    @mkdir($dst);
  }
  //执行移动或复制操作
  foreach ($src as $val) {
    $_dst = $dst.&#39;/&#39;.basename($val);
    //判断目的文件是否存在? 存在不允许进行操作
    if (_isFind($_dst) === TRUE) {
      return _log(&#39;Dst file is exists&#39;, $dst);
    } else if (strpos($dst, $val) === 0) {
      return _log(&#39;Unable to copy/move into itself&#39;);
    }
    if (strtolower($op) === &#39;move&#39;) {      
      if ( ! rename($val, $_dst)) {
        return _log(&#39;Unable to move files&#39;, $val);
      } 
    } else if (strtolower($op) === &#39;copy&#39;) {
      if ( ! _copy($val, $_dst)) {
        return _log(&#39;Unable to copy files&#39;, $val);
      }
    }
  }
  return &#39;Success!&#39;;
}
/**
 * 复制操作 
 *
 */
function _copy($src, $dst) {
  if ( ! is_dir($src)) {
    if ( ! copy($src, $dst)) {
      return _log(&#39;Unable to copy files&#39;, $src);
    }
  } else {
    mkdir($dst);
    $ls = scandir($src);
    for ($i = 0; $i < count($ls); $i++) { 
      if ($ls[$i] == &#39;.&#39; OR $ls[$i] == &#39;..&#39;) continue;
      $_src = $src.&#39;/&#39;.$ls[$i];
      $_dst = $dst.&#39;/&#39;.$ls[$i];
      if ( is_dir($_src)) {
        if ( ! _copy($_src, $_dst)) {
          return _log(&#39;Unable to copy files&#39;, $_src);
        }
      } else {
        if ( ! copy($_src, $_dst)) {
          return _log(&#39;Unable to copy files&#39;, $_src);
        }
      }
    }
  }
  return TRUE;
}
/**
 * 日志记录
 *
 */
function _log($msg, $arg = &#39;&#39;) {
  if ($arg != &#39;&#39;) {
    $msg = "date[".date(&#39;Y-m-d H:i:s&#39;)."]\tmsg[".$msg."]\targ[".$arg."]\n";
  } else {
    $msg = "date[".date(&#39;Y-m-d H:i:s&#39;)."]\tmsg[".$msg."]\n";
  }
  echo $msg;
  return @file_put_contents(&#39;copy.log&#39;, $msg, FILE_APPEND);
} 
/**
 * 示例
 * 1. 需要修改$src的数组参数 ; 2. 可以修改_copy_move的第三个参数以分别测试move/copy操作
 *
 */
$src = array(&#39;img&#39;, &#39;min&#39;, &#39;phpinfo.php&#39;);
$dst = &#39;test&#39;;
var_dump(_copy_move($src, $dst, &#39;copy&#39;));
/*end of php*/

概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHP がファイルを受け入れ、サフィックス名を取得する方法

PHP スクリプトのテスト方法と例

DISCUZ ユーザーを統合するための PHP メソッド

以上がPHP でファイルをコピーおよび移動するためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPを使用してソーシャル共有機能を構築する方法PHP共有インターフェイス統合プラクティス PHPを使用してソーシャル共有機能を構築する方法PHP共有インターフェイス統合プラクティス Jul 25, 2025 pm 08:51 PM

PHPでソーシャル共有機能を構築するコア方法は、各プラットフォームの要件を満たす共有リンクを動的に生成することです。 1.最初に現在のページまたは指定されたURLおよび記事情報を取得します。 2。urlencodeを使用してパラメーターをエンコードします。 3.各プラットフォームのプロトコルに従って、共有リンクをスプライスおよび生成します。 4.ユーザーがクリックして共有できるように、フロントエンドにリンクを表示します。 5.ページ上のOGタグを動的に生成して、コンテンツディスプレイの共有を最適化します。 6. XSS攻撃を防ぐために、必ずユーザーの入力を逃がしてください。この方法は、複雑な認証を必要とせず、メンテナンスコストが低く、ほとんどのコンテンツ共有ニーズに適しています。

AIと組み合わせてPHPを使用してテキストエラー修正PHP構文検出と最適化を実現する方法 AIと組み合わせてPHPを使用してテキストエラー修正PHP構文検出と最適化を実現する方法 Jul 25, 2025 pm 08:57 PM

AIによるテキストエラーの修正と構文最適化を実現するには、次の手順に従う必要があります。1。Baidu、Tencent API、またはオープンソースNLPライブラリなどの適切なAIモデルまたはAPIを選択します。 2。PHPのカールまたはガズルを介してAPIを呼び出し、返品結果を処理します。 3.アプリケーションにエラー修正情報を表示し、ユーザーが採用するかどうかを選択できるようにします。 4.構文の検出とコードの最適化には、PHP-LとPHP_CODESNIFFERを使用します。 5.フィードバックを継続的に収集し、モデルまたはルールを更新して効果を改善します。 AIAPIを選択するときは、PHPの精度、応答速度、価格、サポートの評価に焦点を当てます。コードの最適化は、PSR仕様に従い、キャッシュを合理的に使用し、円形クエリを避け、定期的にコードを確認し、Xを使用する必要があります。

ランプスタックを超えて:現代のエンタープライズアーキテクチャにおけるPHPの役割 ランプスタックを超えて:現代のエンタープライズアーキテクチャにおけるPHPの役割 Jul 27, 2025 am 04:31 AM

phpisStillRelevantinModernenterpriseenvironments.1.modernphp(7.xand8.x)は、パフォーマンスゲイン、stricttyping、jit compilation、andmodernsyntaxを提供し、scaleApplications.2.phpintegrateSeffeCtiveTiveliveTiveliveTiveliveTiveTiveTiveliveTiveStures、

PHPでのオブジェクトリレーショナルマッピング(ORM)パフォーマンスチューニング PHPでのオブジェクトリレーショナルマッピング(ORM)パフォーマンスチューニング Jul 29, 2025 am 05:00 AM

n 1クエリの問題を避け、関連するデータを事前にロードすることにより、データベースクエリの数を減らします。 2.必要なフィールドのみを選択して、メモリと帯域幅を保存するために完全なエンティティをロードしないようにします。 3. DoctrineのセカンダリキャッシュやRedis Cacheの高周波クエリ結果など、キャッシュ戦略を合理的に使用します。 4.エンティティのライフサイクルを最適化し、クリア()を定期的に呼び出してメモリを解放してメモリオーバーフローを防ぎます。 5.データベースインデックスが存在し、生成されたSQLステートメントを分析して、非効率的なクエリを避けます。 6.変更が不要なシナリオで自動変更追跡を無効にし、パフォーマンスを改善するためにアレイまたは軽量モードを使用します。 ORMを正しく使用するには、SQLモニタリング、キャッシュ、バッチ処理、適切な最適化を組み合わせて、開発効率を維持しながらアプリケーションのパフォーマンスを確保する必要があります。

PHPとrabbitmqを使用した回復力のあるマイクロサービスを構築します PHPとrabbitmqを使用した回復力のあるマイクロサービスを構築します Jul 27, 2025 am 04:32 AM

柔軟なPHPマイクロサービスを構築するには、RabbitMQを使用して非同期通信を実現する必要があります。 2。信頼性を確保するために、永続的なキュー、永続的なメッセージ、リリース確認、手動ACKを構成します。 3.指数バックオフ再試行、TTL、およびデッドレターキューセキュリティ処理の障害を使用します。 4.監督などのツールを使用して、消費者プロセスを保護し、ハートビートメカニズムを有効にしてサービスの健康を確保します。そして最終的に、システムが障害で継続的に動作する能力を実現します。

Python Run Shellコマンドの例 Python Run Shellコマンドの例 Jul 26, 2025 am 07:50 AM

subprocess.run()を使用して、シェルコマンドを安全に実行し、出力をキャプチャします。注入リスクを避けるために、リストのパラメーターを渡すことをお勧めします。 2。シェル特性が必要な場合は、シェル= trueを設定できますが、コマンドインジェクションに注意してください。 3. subprocess.popenを使用して、リアルタイム出力処理を実現します。 4。Check = COMMATが失敗したときに例外をスローするためにtrueを設定します。 5.単純なシナリオで直接チェーンを呼び出して出力を取得できます。 os.system()または非推奨モジュールの使用を避けるために、日常生活の中でsubprocess.run()を優先する必要があります。上記の方法は、Pythonでシェルコマンドを実行するコアの使用を上書きします。

PHP用の生産対応Docker環境の作成 PHP用の生産対応Docker環境の作成 Jul 27, 2025 am 04:32 AM

正しいPHP Basicイメージを使用し、安全で最適化されたDocker環境を構成することが、生産を実現するための鍵です。 1.攻撃面を減らしてパフォーマンスを向上させるための基本画像としてPHP:8.3-fpm-alpineを選択します。 2.カスタムPHP.iniを介して危険な機能を無効にし、エラーディスプレイをオフにし、OpCacheとJITを有効にしてセキュリティとパフォーマンスを強化します。 3. NGINXを逆プロキシとして使用して、機密ファイルへのアクセスを制限し、PHPリクエストをPHP-FPMに正しく転送します。 4.マルチステージ最適化画像を使用して開発依存関係を削除し、非ルートユーザーを設定してコンテナを実行します。 5. CRONなどの複数のプロセスを管理するためのオプションの監督。 6.展開前に機密情報漏れがないことを確認します

vscode settings.jsonの場所 vscode settings.jsonの場所 Aug 01, 2025 am 06:12 AM

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設定

See all articles