PHP脚本在通过Net_SFTP下载文件时自动崩溃

PHP脚本在通过Net_SFTP下载文件时自动崩溃,php,phpseclib,Php,Phpseclib,我有一个脚本,可以从两个不同的服务器下载两个文件。在下载过程中,页面将停止加载,或产生500内部服务器错误。时间不一致,任何地方都没有错误日志。如果我刷新FTP客户端中的服务器文件夹,我可以看到文件正在下载。我甚至让网络托管公司打开了所有错误日志,但没有错误。这些文件是XML,大小在7MB到15MB之间 这是运行两次的脚本: $conn_id = new Net_SFTP($ftp_server . ":2222"); $conn_id->setTimeout(false); if (!

我有一个脚本,可以从两个不同的服务器下载两个文件。在下载过程中,页面将停止加载,或产生500内部服务器错误。时间不一致,任何地方都没有错误日志。如果我刷新FTP客户端中的服务器文件夹,我可以看到文件正在下载。我甚至让网络托管公司打开了所有错误日志,但没有错误。这些文件是XML,大小在7MB到15MB之间

这是运行两次的脚本:

$conn_id = new Net_SFTP($ftp_server . ":2222");
$conn_id->setTimeout(false);

if (!$conn_id->login($ftp_user_name, $ftp_user_pass))
    exit('Login Failed');

$conn_id->get($server_file, $local_file);
$status = 'success';
$output =  file_get_contents($local_file);

unset($conn_id);
另外,get命令是否返回布尔值

更新:我联系了我的托管公司,他们说:

对于500个错误,我们必须查找它们。您遇到以下错误: 脚本头过早结束 这是unix版本的,我们不知道

那不是正确的方法。你应该这样做:

$conn_id = new Net_SFTP($ftp_server, 2222);
您所做的与此类似:

fsockopen($ftp_server . ':2222', 22);

不久前,我用“无法访问文件,文件正在使用”刷新文件夹时遇到一些问题。我不知道这是不是你的问题。您可以关闭文件夹并再次执行脚本吗?即使是tailf/var/log/httpd/access\u log或error\u log?没有结果?我只有FTP和Cpanel访问权限。我更新了我的问题以获得托管公司支持部门的响应。谢谢,但是在进行此更改后,我仍然收到一个内部服务器错误。查看您的$conn_id->setTimeoutfalse;。。。这也是错误的。false被强制转换为0,所以实际上是告诉stream_select立即返回。看见它建议不要将超时设置为0。如果你想让它不超时,你不能这么做,但你可以设置一个非常高的超时。比如一个小时、一天、一周或者类似的时间。好吧,我把它改成60*60,或者1小时。我还更新了我的问题,以获得托管公司支持部门的回复。@Jack Cole-我认为这适用于你,假设不是你发布了lol:
fsockopen($ftp_server . ':2222', 22);