2010-05-04 66 views
1

我有这样的代码,我一直在努力,但我有一个很难为它工作。我做了一个,但它只适用于PHP 5.3,我意识到我的主机只支持PHP 5.0!我是想看看我是否能得到它在我的服务器正常工作,我只是失去了,累了笑有人可以帮我修复我的代码吗?

01,对不起计算器对我来说是一个新事物。不知道该怎么想。作为一个论坛或发布问题的地方......嗯,我很抱歉对我提问的方式粗鲁。

我不知道我能不能给我如何正确地插入目录结构与我如何写这个代码的一些指导。我不知道如何告诉PHP在哪里上传我的文件和诸如此类的东西,我从一个朋友,谁帮我整理一下我的一些错误的一些帮助,但我仍然有对付的mkdir和链路丢失,断开链接功能。这就是我想提到我的直觉吗?

我知道php 5.3使用_ DIR _和php 5.0使用dirname(_ _ FILE_ _),我已经尝试了两个,我得到了同样的错误。出于测试目的,我的文件被设置为0777。它现在想要写入和移动我上传的文件有什么问题?

} elseif ((file_exists("\\uploads\\{$username}\\images\\banner\\{$filename}")) || (file_exists("\\uploads\\{$username}\\images\\banner\\thumbs\\{$filename}"))) { 

     $errors['img_fileexists'] = true; 
    } 

    if (! empty($errors)) { 
     unlink($_FILES[IMG_FIELD_NAME]['tmp_name']); //cleanup: delete temp file 
    } 

    // Create thumbnail 
    if (empty($errors)) { 

     // Make directory if it doesn't exist 
     if (!is_dir("\\uploads\\{$username}\\images\\banner\\thumbs\\")) { 

      // Take directory and break it down into folders 
      $dir = "uploads\\{$username}\\images\\banner\\thumbs"; 
      $folders = explode("\\", $dir); 

      // Create directory, adding folders as necessary as we go (ignore mkdir() errors, we'll check existance of full dir in a sec) 
      $dirTmp = ''; 
      foreach ($folders as $fldr) { 
       if ($dirTmp != '') { $dirTmp .= "\\"; } 
       $dirTmp .= $fldr; 
       mkdir("\\".$dirTmp); //ignoring errors deliberately! 
      } 

      // Check again whether it exists 
      if (!is_dir("\\uploads\\$username\\images\\banner\\thumbs\\")) { 
       $errors['move_source'] = true; 
       unlink($_FILES[IMG_FIELD_NAME]['tmp_name']); //cleanup: delete temp file 
      } 
     } 

     if (empty($errors)) { 

      // Move uploaded file to final destination 
      if (! move_uploaded_file($_FILES[IMG_FIELD_NAME]['tmp_name'], "/uploads/$username/images/banner/$filename")) { 
       $errors['move_source'] = true; 
       unlink($_FILES[IMG_FIELD_NAME]['tmp_name']); //cleanup: delete temp file 

      } else { 

       // Create thumbnail in new dir 
       if (! make_thumb("/uploads/$username/images/banner/$filename", "/uploads/$username/images/banner/thumbs/$filename")) { 
        $errors['thumb'] = true; 
        unlink("/uploads/$username/images/banner/$filename"); //cleanup: delete source file 
       } 
      } 
     } 
    } 

    // Record in database 
    if (empty($errors)) { 

     // Find existing record and delete existing images 
     $sql = "SELECT `bannerORIGINAL`, `bannerTHUMB` FROM `agent_settings` WHERE (`agent_id`={$user_id}) LIMIT 1"; 
     $result = mysql_query($sql); 
     if (!$result) { 
      unlink("/uploads/$username/images/banner/$filename"); //cleanup: delete source file 
      unlink("/uploads/$username/images/banner/thumbs/$filename"); //cleanup: delete thumbnail file 
      die("<div><b>Error: Problem occurred with Database Query!</b><br /><br /><b>File:</b> " . __FILE__ . "<br /><b>Line:</b> " . __LINE__ . "<br /><b>MySQL Error Num:</b> " . mysql_errno() . "<br /><b>MySQL Error:</b> " . mysql_error() . "</div>"); 
     } 
     $numResults = mysql_num_rows($result); 
     if ($numResults == 1) { 
      $row = mysql_fetch_assoc($result); 

      // Delete old files 
      unlink("/uploads/$username/images/banner/" . $row['bannerORIGINAL']); //delete OLD source file 
      unlink("/uploads/$username/images/banner/thumbs/" . $row['bannerTHUMB']); //delete OLD thumbnail file 
     } 

     // Update/create record with new images 
     if ($numResults == 1) { 
      $sql = "INSERT INTO `agent_settings` (`agent_id`, `bannerORIGINAL`, `bannerTHUMB`) VALUES ({$user_id}, '/uploads/$username/images/banner/$filename', '/uploads/$username/images/banner/thumbs/$filename')"; 
     } else { 
      $sql = "UPDATE `agent_settings` SET `bannerORIGINAL`='/uploads/$username/images/banner/$filename', `bannerTHUMB`='/uploads/$username/images/banner/thumbs/$filename' WHERE (`agent_id`={$user_id})"; 
     } 
     $result = mysql_query($sql); 
     if (!$result) { 
      unlink("/uploads/$username/images/banner/$filename"); //cleanup: delete source file 
      unlink("/uploads/$username/images/banner/thumbs/$filename"); //cleanup: delete thumbnail file 
      die("<div><b>Error: Problem occurred with Database Query!</b><br /><br /><b>File:</b> " . __FILE__ . "<br /><b>Line:</b> " . __LINE__ . "<br /><b>MySQL Error Num:</b> " . mysql_errno() . "<br /><b>MySQL Error:</b> " . mysql_error() . "</div>"); 
     } 
    } 

    // Print success message and how the thumbnail image created 
    if (empty($errors)) { 
     echo "<p>Thumbnail created Successfully!</p>\n"; 
     echo "<img src=\"/uploads/$username/images/banner/thumbs/$filename\" alt=\"New image thumbnail\" />\n"; 
     echo "<br />\n"; 
    } 
} 

我收到以下错误:

警告:move_uploaded_file(./上传/ saiyanz2k /图片/横幅/阿滋-wall.jpg)function.move上传文件]:失败打开流:权限在/services7/webpages/util/s/a/saiya.site.aplus.net/helixagent.com/public/upload2.php否认线112 警告:move_uploaded_file()以[function.move上传-file]:无法在/services7/webpages/util/s/a/saiya.site移动 '/ /的Webdata/phpupload/phpVoIEQj服务' 到 './uploads/saiyanz2k/images/banner/azumanga-wall.jpg' .aplus.net/helixagent.com/public/upload2.php 112行

+2

欢迎使用stackoverflow。您需要更新您的帖子,确认您收到的实际错误,或者解释哪些功能无法正常工作。 您提供的代码看起来应该可以在php 5.3和5.0中使用 – 2010-05-04 06:34:34

+3

首先,您可以告诉我们它是如何失败的。特别是说出你期望发生的事情和实际发生的事情,包括任何错误消息。这是相当多的代码来通过。你应该尝试创建一个最小的测试用例并发布,而不是把所有东西都扔在你的问题中。 – outis 2010-05-04 06:34:35

+2

就我而言,我发现发布300行代码以及基本上说“它已损坏,请修复它”的单个段落有点不礼貌。 (比较:“不粗鲁”将是12行代码以及3段,解释它做了什么,它应该做什么以及你准确收到什么错误)。 – Tomalak 2010-05-04 06:55:27

回答

0

一种方法是从代码中检查某个命令/函数是否可用。您可以使用function_exists函数,例如:

if (function_exists('date_default_timezone_set')) 
{ 
    date_default_timezone_set("GMT"); 
} 
else 
{ 
    echo 'date_default_timezone_set is not supported....'; 
} 
+0

好吧,它工作完美,如果我使用5.3和__DIR__,但由于我在5.0我得到 警告:move_uploaded_file(./ uploads/saiyanz2k/images/banner/azumanga-wall.jpg)[function.move-uploaded-file] :未能打开流:权限被拒绝在/services7/webpages/util/s/a/saiya.site.aplus.net/helixagent.com/public/upload2.php上线112 警告:move_uploaded_file()[函数。 move-uploaded-file]:无法在/ services7/webpages/util/s/a /中移动'/ services/webdata/phpupload/phpVoIEQj'到'./uploads/saiyanz2k/images/banner/azumanga-wall.jpg' saiya.site.aplus.net/helixagent.com/public/upload2.php 112行 – Eli 2010-05-04 07:13:22

+1

@ user267490:如果这是错误,它并不意味着功能不起作用,这意味着最有可能的是上传的路径文件错误或者php.ini文件中的上传限制设置得非常低。 – Sarfraz 2010-05-04 07:14:55

+0

嗯,亚我认为我的目录结构没有被正确完成。也许这是我真的很难与代码。嗯,我的服务器上的目录是/ uploads/$ username/images/banner /,我正在尝试使用。 – Eli 2010-05-04 07:19:54

0

啊!我很抱歉,并不意味着对你们发泄我的挫败感。但现在看来,我已经呆了好几个小时了。

就像我提到的这段代码的作品,但由于我的服务器挑剔,我不能使用我编码的5.3语法。这是我的尝试,使其在我的服务器5.0 PHP的工作。

特别是我认为mkdir()和unlink()函数有问题。

如果你去www.helixagent.com登录测试/测试,然后在网址去/upload2.php,那么你会看到它抛出我的错误。

好吧,它工作完美,如果我使用5.3和DIR但因为我在5。0我尝试了不同的方法

我得到的是

Warning: move_uploaded_file(./uploads/saiyanz2k/images/banner/azumanga-wall.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /services7/webpages/util/s/a/saiya.site.aplus.net/helixagent.com/public/upload2.php on line 112 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/services/webdata/phpupload/phpVoIEQj' to './uploads/saiyanz2k/images/banner/azumanga-wall.jpg' in /services7/webpages/util/s/a/saiya.site.aplus.net/helixagent.com/public/upload2.php on line 112 
+2

PHP <5.3中'__DIR__'等价于'dirname(__ FILE __);' - 错误提示您的目标目录不可写,这不是PHP的问题。此外,请编辑您的问题以提供更多信息。 SO不会像论坛一样使用。 – Gordon 2010-05-04 07:17:50

+0

继续戈登的评论,SO使用Q&A格式。声称是答案的帖子应该回答这个问题。关于这个问题的信息出现在问题中。其他帖子应该是评论。你可以随时对自己的问题发表评论,并在其他问题中评论50次。阅读常见问题(点击页面顶部的链接)。 – outis 2010-05-04 21:03:43

0

它看起来像你没有访问该文件夹(或文件)中的错误

/上传/ $的用户名/图片/横幅/ $文件名

这可能是因为主机basedir限制(例如,你可能不会父级目录/服务/ webdata /)或只是在操作系统的权限丢失。

尝试(临时)将/ uploads /的权限设置为777或从控制台执行脚本以查看您是否拥有basedir限制。

0

采取在错误信息的路径仔细一看:

/uploads/saiyanz2k/images/banner/azumanga-wall.jpg
/services7/webpages/util/s/a/saiya.site.aplus.net/helixagent.com/public/upload2.php

的destination是一个相对路径,很可能与upload2.php的目录相关。我看到的一个相对路径是行:

 // Take directory and break it down into folders 
     $dir = "uploads\\{$username}\\images\\banner\\thumbs"; 

这或许应该是:

 // Take directory and break it down into folders 
     $dir = "\\uploads\\{$username}\\images\\banner\\thumbs"; 

其实,这应该是

 $dir = "/uploads/{$username}/images/banner/thumbs"; 

由于PHP支持使用正斜线作为目录分隔符,而反斜杠仅在MS平台上受支持。

相关问题