【问题标题】:copy php no error复制php没有错误
【发布时间】:2012-02-07 09:22:00
【问题描述】:

我有一个表单,可以将图像从计算机上传到服务器,但它不起作用。我没有收到任何错误消息,所以这很烦人。 (首先我的权限被拒绝,但通过更改权限解决了这个问题),但是现在当我提交表单时,一切正常,但文件没有复制到目标文件夹。 (文件夹存在:我用file_exist()试过了...)

下面是部分代码:

<form action='/changingfruit/index.php?item=bad' name='form' method='post' enctype='multipart/form-data'>
    <tr>
        <td><input type='text' name='titel_nl' value="titel nl" /><br/><input type='text' name='titel_fr' value="titel fr"/></td>
        <td><input type='file' name='text_nl' id='text_nl' accept="image/*"/><br/><input type='file' name='text_fr' id="test_fr" accept="image/*"/></td>        
        <td class="vTop"><input type="submit" value="Bewaar"/></td>
    </tr>
    </form>

将值发送到数据库的部分:

 $str_titel_nl = $_POST["titel_nl"]; 
  $str_titel_fr = $_POST["titel_fr"]; 
  $str_text_nl = $_FILES["text_nl"]["name"]; 
  $str_text_fr = $_FILES["text_fr"]["name"];  
       if(!empty($_FILES["text_nl"]["name"])){ 
       $tmp = $_FILES['text_nl']['tmp_name'] ;
        $foto = $_FILES['text_nl']['name'] ;
         $copied = copy($tmp, $images_nl.$foto); 
    unlink($tmp);  
       }

(当然上面只是代码的一部分:但这部分是行不通的:

       if(!empty($_FILES["text_nl"]["name"])){ 
       $tmp = $_FILES['text_nl']['tmp_name'] ;
        $foto = $_FILES['text_nl']['name'] ;
         $copied = copy($tmp, $images_nl.$foto); 
    unlink($tmp);  
       }

这部分下面的代码也可以正常工作,所以没有错误,但也没有图像。 有人知道问题出在哪里吗?

提前非常感谢!

找到答案 所以这确实是一个权限问题。一切都是 777,但最后一个放置图像的文件夹有 755。(/fruits/img/2012/thumb/)拇指是 755。我只是忽略了它。感谢大家的帮助!

【问题讨论】:

  • 应该检查 apache 错误日志,或者你保存 php 错误的地方
  • BLEARGH! 您不需要在每一行代码上都使用&lt;?php ... ?&gt;。只需打开一个块,将代码放在那里,然后关闭该块。

标签: php copy


【解决方案1】:

您的上传代码非常混乱。您应该使用 move_uploaded_file 而不是使用副本,并验证它是否确实有效,然后执行所需的任何操作。

我也不确定为什么您的每一行都以 &lt;?php 开头并以 ?&gt; 结尾? 你可以把它全部写成一个块,我认为它也会更有意义,并且肯定会让你的代码更干净。

我建议的最后一件事是阅读"Handling File Uploads" from the PHP Manual。它可能会对您遇到的问题有所帮助。

附:尝试在顶部添加 ini_set("display_errors","On"); error_reporting(E_ALL); 并查看是否收到任何错误消息。

【讨论】:

  • 使用这一行:ini_set("display_errors","On");错误报告(E_ALL);我仍然没有收到错误。
  • 你确定它在 PHP 块中吗?如果是这样,它肯定会出现一些错误。你能把你的整个 PHP 文件发布到 pastebin.com 上吗?
  • 是的,它在一个 php 块内,因为在我在这里展示的代码之后,还有其他代码用于将项目写入数据库,并且工作正常。所以可能还是权限有点小问题。
  • 如果是权限问题,你应该得到一个错误。将整个 php 文件放入 pastebin.com 会更容易。
【解决方案2】:
【解决方案3】:

你可以试试这个

$flag = @copy($temp, $move);
if ( $flag === true )
{
   print "Uploaded";
}

【讨论】:

    【解决方案4】:

    我已经发布了一个简单的文件上传解决方案,无需担心实现。

    点击查看话题

    image uploading issue in codeigniter 2.1.0

    请阅读本节

    $uploader-&gt;getMessage(); 将返回与上传失败相关的错误字符串。这样就可以理解上传失败的原因了。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-02
      • 2011-02-12
      • 2019-12-04
      • 2011-08-25
      • 2012-04-09
      • 2018-12-25
      • 2014-03-20
      • 2017-03-19
      相关资源
      最近更新 更多