Uploadify和PHP FTP - $ _REQUEST ['folder']没有通过

时间:2010-09-10 11:11:59

标签: php jquery uploadify

我正在尝试使用uploadify和FTP连接来上传文件。我意识到目录没有被创建,因为来自js的'folder'变量没有被传递。我想知道这是否是范围的事情。无论如何,这是js:

$("#uploadify").uploadify({
'uploader'       : '/lib/jquery.uploadify-v2.1.0/uploadify.swf',
'script'         : '/lib/jquery.uploadify-v2.1.0/uploadify.php',
'cancelImg'      : '/lib/jquery.uploadify-v2.1.0/example/cancel.png',
'folder'         : '<?=time()?>',
'queueID'        : 'fileQueue',
'multi'          : true

});

PHP:

$dir = $_REQUEST['folder'];
if (!ftp_mkdir($conn_id, $dir)) {
 echo "There was a problem while creating $dir\n";
} else {
echo "successfully created $dir\n";
}

我收到错误 - “ftp_mkdir():无法创建目录。”

我确实检查了时间()是否得到了回应而且确实如此。如果我硬编码一个普通的字符串就会失败。但是如果我将$ dir更改为等于“what”(而不是请求),则会创建目录,但它不会接受请求参数。我也试着上传和发布。

如果我不使用FTP,只需上传到服务器就可以使用相同的方案 - 没有任何问题。

1 个答案:

答案 0 :(得分:0)

您可以做两件事来诊断:

  1. 确保PHP正在访问您认为正在访问的路径。
  2. 确保该路径中存在send-files并且它是全球可写的。
  3. 从您的错误消息中看起来您可能正在Linux或Mac机器上运行您的服务器(我猜Mac)。你知道send-files目录肯定存在吗?您可能需要检查并确保send-files位于PHP正在使用的当前工作目录中:

    <?php
    print getcwd();
    ?>
    

    使用上面的代码创建一个文件,在浏览器中访问它,如果结果与实际包含send-files的目录/路径不同,您可以在PHP脚本中执行以下两项操作之一来进行uploadify :

    1. 将PHP当前工作目录更改为send-files的路径:chdir('/Users/user/Sites/directory/with/send-files/')。您应该只能将它放在uploadify PHP脚本的顶部,它应该可以工作。但如果没有,发帖,我可以帮助你找出原因。 ]
    2. 在上面PHP脚本中send-files调用的任何路径结果中创建getcwd()
    3. 在任何一种情况下,您都需要确保目录send-files存在且PHP有权写入该目录。上述任何一个选项都有助于第一部分,确保路径存在。

      然后我们进入第二部分。我们需要确保PHP脚本可以写入该目录。我们chmod这些文件是世界可写的。至少有两种方法可以做到这一点:

      1. 如果您知道如何使用命令行/ Mac的终端应用程序,请将其启动并cdsend-files所在的目录:cd /Users/user/Sites/path/to/send-files(但在此示例中为您' d想要cd进入/去,而不是/ send-files;])然后执行:chmod -R 777 send-files
      2. 如果您不知道如何使用命令行,请学习。这非常有用。但就目前而言,如果您使用的是Mac,请使用Finder浏览到send-files所在的目录。右键单击send-files,然后单击“获取信息”。在“信息”窗格的底部,展开“共享和权限”部分。单击“信息”窗格右下角的锁定,然后输入密码以解锁权限选项,以便您可以编辑它们。将权限列中的每个项目更改为“读取和写入”选项。这将使该目录及其所有内容可读/写。
      3. 然后尝试再次上传文件,看看文件是否结束。它有效吗?