使用phpseclib通过sftp上传远程文件时有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
可能是什么问题? 本地文件都很好,无论哪种方式...
认为Ĵ
答
的第二个参数的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
可以显示$ filename初始化的代码吗?你使用$ _GET还是$ _POST? – MarioP 2013-04-22 13:39:08
file.php是否有比这更多的代码,比如任何包含? – MatthewMcGovern 2013-04-22 13:40:22
另外,你是否依赖于你的代码中的相对路径? – MarioP 2013-04-22 13:41:10