0

我们在一个由数据库驱动的 CI 应用程序上维护 70 多个房地产网站(实际上,一个数据库和应用程序用于生产站点,一个数据库和应用程序用于开发站点),以便为每个站点提供必要的差异。我们提供定制的 CMS,以便物业经理可以定期更新他们的网站。有一个批准流程可以通过 CMS 将对其开发站点所做的更改推送到其生产站点。

CMS 的一项功能是上传相册。一旦专辑上传到开发并批准生产,我需要将此文件夹从开发资产复制到他们的生产资产。

我建立 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); 

从星期四晚上开始,我一直在与这个作斗争,需要一些建议。感谢所有帮助。

乔恩

请求的日志文件:

调试 - 2012-06-18 07:15:31 --> 控制器类已初始化

调试 - 2012-06-18 07:15:31 --> Ftp 类已加载。第二次尝试被忽略。

调试 - 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]:未能打开目录:没有这样的文件或目录 /var/www/vhosts/edrpropertyoperations.com/httpdocs/WEBdev/system/libraries/Ftp.php 532

调试 - 2012-06-18 07:15:31 --> 最终输出发送到浏览器

调试 - 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) 将 debug 设置为 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 安装并将其放在您的服务器上。您不需要任何配置或数据库连接。然后在新环境中尝试上面的示例。

于 2012-06-18T08:09:40.850 回答