2013-04-22 141 views
0

我有运行xampp(1.7.7)的Server 2008 R2。 我尝试使用sftp和phpseclib。 当我手动加载的PHP页面,一切正常。 当通过cronjob加载页面时,我在远程计算机上获得了0字节文件。使用phpseclib通过sftp上传远程文件时有0个字节

这里是PHP代码:

$sftp = new Net_SFTP('remote.server'); 
if (!$sftp->login('user', 'password')) { 
    exit('Login Failed'); 
} 
$sftp->put($filename.".DAT", $filename.".DAT", NET_SFTP_LOCAL_FILE); 

和这里的蝙蝠在的cronjob:

@E:\WSERVER\xampp\php\php.exe -f E:\WSERVER\xampp\htdocs\sites\anq\file.php 

可能是什么问题? 本地文件都很好,无论哪种方式...

认为Ĵ

+0

可以显示$ filename初始化的代码吗?你使用$ _GET还是$ _POST? – MarioP 2013-04-22 13:39:08

+0

file.php是否有比这更多的代码,比如任何包含? – MatthewMcGovern 2013-04-22 13:40:22

+0

另外,你是否依赖于你的代码中的相对路径? – MarioP 2013-04-22 13:41:10

回答

0

的第二个参数的Net_SFTP ::把()调用如下:

$filename.".DAT" 

我的猜测是,这是一个相对路径,并且cron作业(或Windows调度程序任务)所耗尽的目录与手动运行该目录时不一样。

即。解决办法是使第二个参数成为文件位置的绝对路径。

+0

感谢您的非常感谢的帮助,我有点失落,不太了解phpseclib的放置行为。把绝对路径放在第二个参数中解决了我的问题:'$ sftp-> put($ filename。“.DAT”,“E:\\ WSERVER \\ xampp \\ htdocs \\ path \\”。$ filename。“ .DAT“,NET_SFTP_LOCAL_FILE);'关于j – jochen 2013-04-24 07:44:14