0

各サイトに必要な違いを提供するために、データベース (実際には、実稼働サイト用の 1 つのデータベースとアプリケーション、および開発サイト用の 1 つのデータベースとアプリケーション) を利用した 1 つの CI アプリケーションで 70 を超えるプロパティ Web サイトを維持しています。プロパティマネージャーがサイトを定期的に更新できるように、カスタム CMS を提供しています。CMS を介して開発サイトに加えられた変更を本番サイトにプッシュするための承認プロセスがあります。

CMS の機能の 1 つに、フォト アルバムのアップロードがあります。アルバムが開発用にアップロードされ、制作用に承認されたら、このフォルダーを開発用アセットから制作用アセットにコピーする必要があります。

FTP 接続を確立し、次を使用して問題なくフォト アルバム フォルダーを作成します。

$this->ftp->mkdir($path['ftpP'].'photoAlbums/'.$album[0]['albumFolderName'].'/', DIR_WRITE_MODE);

($path['ftpP'] は次のようになります: /httpdocs/edrAssets/propsP/700/

FTP クラスでミラー機能を使用しようとすると、エラーや警告は表示されませんが、転送も行われません。

そのコードは次のとおりです。

$dLink = $path['ftpD'].'photoAlbums/'.$album[0]['albumFolderName'].'/';
$pLink = $path['ftpP'].'photoAlbums/'.$album[0]['albumFolderName'].'/';

$this->ftp->mirror($dLink, $pLink); 

私は木曜日の夜遅くからこれと戦っていて、アドバイスが必要です. すべての助けに感謝します。

ジョン

要求されたログ ファイル:

DEBUG - 2012-06-18 07:15:31 --> コントローラ クラスが初期化されました

DEBUG - 2012-06-18 07:15:31 --> Ftp クラスは既にロードされています。2 回目の試行は無視されました。

DEBUG - 2012-06-18 07:15:31 --> ここで FTP しようとしています

エラー - 2012-06-18 07:15:31 --> 重大度: 警告 --> opendir() [function.opendir]: /httpdocs/edrAssets/propsD/700/photoAlbums/theUSOpen2012/ /var/www にアクセスできません/vhosts/edrpropertyoperations.com/httpdocs/WEBdev/system/libraries/Ftp.php 532

エラー - 2012-06-18 07:15:31 --> 重大度: 警告 --> opendir(/httpdocs/edrAssets/propsD/700/photoAlbums/theUSOpen2012/) [function.opendir]: dir を開くことができませんでした: そのようなものはありませんファイルまたはディレクトリ /var/www/vhosts/edrpropertyoperations.com/httpdocs/WEBdev/system/libraries/Ftp.php 532

DEBUG - 2012-06-18 07:15:31 --> 最終出力がブラウザに送信される

DEBUG - 2012-06-18 07:15:31 --> 合計実行時間: 0.1626

追加*

    public function approved_create_album( $id ){   
         $thisTask = $this->mcms->getSingleAdminTask( $id );

         $album = $this->mcms->getAlbumByID($thisTask[0]['itemID']);    
         $path = $this->mcms->path_variables( $album[0]['propNumber']);

         $this->load->library('ftp');   
         $ftp['hostname'] = <REMOVED>;
         $ftp['username'] = <REMOVED>;  
         $ftp['password'] = <REMOVED>;
         $ftp['port']     = 21;     
         $ftp['passive']  = FALSE;  
         $ftp['debug']    = TRUE;   
         $ftp['ssl_mode'] = FALSE;  
         $this->ftp->connect($ftp);

         $dLink = $path['ftpD'].'photoAlbums/'.$album[0]['albumFolderName'].'/';    
         $pLink = $path['ftpP'].'photoAlbums/'.$album[0]['albumFolderName'].'/';

         if( !file_exists($pLink) && !is_dir($pLink)){
              $this->ftp->mkdir($path['ftpP'].'photoAlbums/'.$album[0]['albumFolderName'].'/', DIR_WRITE_MODE);     
         } // end if

         log_message('debug', 'Trying to FTP here');
         $this->ftp->mirror($dLink, $pLink);

         echo $dLink . " to " . $pLink; 
} // end approved_create_album function
4

2 に答える 2

0

コード内のunixにドロップダウンして、コマンドラインを使用するのはどうでしょうかrsync

于 2012-06-18T00:09:40.837 に答える
0

ステップバイステップのデバッグをお勧めします。

1) デバッグを TRUE に設定します。関数リファレンスを参照してください。error_reportingをオンにする必要がある場合があります。

2) サーバーに接続し (接続した)、ファイルをアップロードします。それが機能する場合、a) 接続が機能し、b) ファイルパスが正しいことがわかります。

それでもうまくいかない場合は、ログを調べてください (またはここに投稿してください ;-))。幸運を!

アップデート:

自分のサーバーで FTP ライブラリをテストしました。箱から出してすぐに、魔法のように機能します。そのため、問題がサーバーにあるのか、CI 構成にあるのかを突き止める必要があります。

次に行うことは次のとおりです。

1) 次の例を使用して、構成を減らし、変数を減らし、すべてをハードコーディングしてみてください。

<?php
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username'; 
$config['password'] = 'your-password';
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close(); 

うまくいかない場合は、次のようにします。

2) 新しい CI インストールをダウンロードして、サーバーに配置します。構成や DB 接続は必要ありません。次に、新しい環境で上記の例を試してください。

于 2012-06-18T08:09:40.850 に答える