将所有文件和文件夹上载到FTP服务器的PHP脚本
我有个问题,我想不出来。我在本地服务器中有一个文件夹,我想通过FTP将其上载到远程服务器。当我在Windows中用XAMP apache运行脚本时,我可以毫无问题地将其上载到子文件夹和所有文件,现在我尝试使用相同的PHP脚本从linux apache将同一文件夹发送到同一目标,但我得到“找不到文件,请重试” 任何帮助都将不胜感激。谢谢大家!将所有文件和文件夹上载到FTP服务器的PHP脚本,php,linux,apache,ftp,Php,Linux,Apache,Ftp,我有个问题,我想不出来。我在本地服务器中有一个文件夹,我想通过FTP将其上载到远程服务器。当我在Windows中用XAMP apache运行脚本时,我可以毫无问题地将其上载到子文件夹和所有文件,现在我尝试使用相同的PHP脚本从linux apache将同一文件夹发送到同一目标,但我得到“找不到文件,请重试” 任何帮助都将不胜感激。谢谢大家! <?php ob_start(); set_time_limit(0); $sourcedir="source_folder"; //this
<?php
ob_start();
set_time_limit(0);
$sourcedir="source_folder"; //this is the folder that you want to upload with all subfolder and files of it.
$ftpserver="192.168.1.150"; //ftp domain name
$ftpusername="user"; //ftp user name
$ftppass="user"; //ftp passowrd
$ftpremotedir="destination_folder"; //ftp main folder
$ftpconnect = ftp_connect($ftpserver);
$ftplogin = ftp_login($ftpconnect, $ftpusername, $ftppass);
if((!$ftpconnect) || (!$ftplogin))
{
echo "cant connect!";
die();
}
function direction($dirname)
{
global $from,$fulldest,$ftpremotedir,$ftpconnect,$ftpremotedir;
chdir($dirname."\\");
$directory = opendir(".");
while($information=readdir($directory))
{
if ($information!='.' and $information!='..' and $information!="Thumbs.db")
{
$readinfo="$dirname\\$information";
$localfil=str_replace("".$from."\\","",$dirname)."";
$localfold="$localfil\\$information";
$ftpreplacer=str_replace(array("\\\\","\\"),array("/","/"),"$ftpremotedir\\".str_replace("".$fulldest."","",$dirname)."\\$information");
if(!is_dir($information))
{
$loading = ftp_put($ftpconnect, $ftpreplacer, $readinfo, FTP_BINARY);
if (!$loading)
{
echo "<font color=red>Files not found... Please try again...</font>"; echo "<br>"; fls();
}
else
{
echo "<font color=green> Please wait... Uploading files</font>"; echo "<br>"; fls();
}
}
else
{
ftp_mkdir($ftpconnect, $ftpreplacer);
direction("$dirname\\$information");
chdir($dirname."\\");
fls();
}
}
}
closedir ($directory);
}
function fls()
{
ob_end_flush();
ob_flush();
flush();
ob_start();
}
$from=getcwd();
$fulldest=$from."\\$sourcedir";
direction($fulldest);
ftp_close($ftpconnect);
echo '<font color=red>Your folder is now ready for use <font color=red>';
?>
>
你有很多反斜杠。是否使用反斜杠作为目录分隔符?这在Linux上不起作用。您必须使用/
或目录分隔符
它也可以在Windows上工作,因为在Windows系统上运行时,PHP会自动执行从/
到“\`的任何必要转换。我刚刚用“/”替换了所有的“\”,现在它可以正常工作:)。我是php新手,谢谢你们的回答!别忘了接受答案,然后我注意到您正在将\与chdir一起使用,但在Unix系统上这不是目录分隔符。chdir在结尾不需要\或/
,所以只需将其省略即可。此外,ftp_put可能会以其他方式失败,而不是无法找到文件,因此错误消息可能是错误的。添加错误处理程序以获取ftp错误/警告消息。