$userfile来自$HTTP_POST_FILES全局数组
小心

解决方案 »

  1.   


    $HTTP_POST_FILES['userfile'][tmp_name]
      

  2.   

    sorry,搞忘了
    在函数中应该加上GLOBALS,所以用:
    $GLOBALS[HTTP_POST_FILES]['userfile'][tmp_name]
      

  3.   

    如果php.ini设置register_globals=on 
    就用
    $GLOBALS['userfile'];
      

  4.   

    如果php.ini设置register_globals=on 
    就用
    $GLOBALS['userfile'];
      

  5.   

    或者用$_FILES,这样就不用担心全局的问题了.
      

  6.   

    这个$userfile好象是正常的,print_r后能看到要的值.
    但是在copy()前中断掉却看不到php的uploadtemp目录下有临时文件.贴子好难回复啊,总说失败.
      

  7.   

    出错信息是:
    Array to string conversion in :在用copy的地方.
    Unable to open 'Array' for reading: No such file or directory in 
    难道php出问题了?还是其他?
      

  8.   

    出错信息是:
    Array to string conversion in :在用copy的地方.
    Unable to open 'Array' for reading: No such file or directory in 
    难道php出问题了?还是其他?
      

  9.   

    改用新函数吧!move_uploaded_file和is_uploaded_file,更安全,更好用:)
      

  10.   

    extract($_REQUEST);
    extract($_SERVER); 
    找到原因了,在开头加了这两句.
      

  11.   

    哎,wasy不是叫你把register_globals设为On嘛……
      

  12.   

    把register_globals设为On后,就相当于在每个PHP文件头都加入了那两句.
      

  13.   

    谢谢各位了.
    其实用PHP也只两个月,很多东西还没搞清楚.
      

  14.   

    谢谢各位了.
    其实用PHP也只两个月,很多东西还没搞清楚.
      

  15.   

    LeeMaRS(小菜虎_水壶的仇人) :
    这是什么意思? 既然相当,那么加上这两句会有什么负作用?
      

  16.   

    这个方法是由wasy先提出来的.当register_globals=Off的时候,为了不修改php.ini的设置,也能使原来的程序正常工作,就使用extract函数,将$_REQUEST(POST GET都在里面了)和$_SERVER(主要是$PHP_SELF)两个数组的内容释放出来,$_SERVER["PHP_SELF"]就被释放成$PHP_SELF变量了,内容就是$_SERVER["PHP_SELF"]的内容.也就是:KEY是变量名,VALUE就是变量值.然后旧的程序一般就能正常工作 了.
      

  17.   

    这个方法是由wasy先提出来的.当register_globals=Off的时候,为了不修改php.ini的设置,也能使原来的程序正常工作,就使用extract函数,将$_REQUEST(POST GET都在里面了)和$_SERVER(主要是$PHP_SELF)两个数组的内容释放出来,$_SERVER["PHP_SELF"]就被释放成$PHP_SELF变量了,内容就是$_SERVER["PHP_SELF"]的内容.也就是:KEY是变量名,VALUE就是变量值.然后旧的程序一般就能正常工作 了.
      

  18.   

    对啊.我也是以前看到这两句,觉得很有道理,就加了进来.
    但是不明白为什么extract了反而不对了.充其量只是再覆盖一次吧.
    难道register_globals=on后,这些数组就不存在或变了?
      

  19.   

    对啊.我也是以前看到这两句,觉得很有道理,就加了进来.
    但是不明白为什么extract了反而不对了.充其量只是再覆盖一次吧.
    难道register_globals=on后,这些数组就不存在或变了?
      

  20.   

    我想原因可能是这样的:
    register_globals=on,
     用到的$userfile,是文件的tmp_name,string类型, 同时还有$userfile_name, $userfile_size, $userfile_type几个全局变量.加上extract($_REQUEST);extract($_SERVER); 后.
    $HTTP_POST_FILES['userfile'],被extract了,但$usrfile是个数组了.
    再来extract一次,才会有$userfile_name, $userfile_tmp_name等.所有会出这样的问题. 就是$userfile被从string覆盖成array了.
      

  21.   

    首先要搞清楚extract的功能:
    extract只是將數組分解成變量,索引為變量名,值為變量的值而對於$HTTP_POST_FILES比較特殊,不能僅僅用extract來分解,你用
    print_r($HTTP_POST_FILES);察看一下就知道了。$file等效於$HTTP_POST_FILES['file'][tmp_name].你用extract分解只會得到數組$file
      

  22.   

    首先要搞清楚extract的功能:
    extract只是將數組分解成變量,索引為變量名,值為變量的值而對於$HTTP_POST_FILES比較特殊,不能僅僅用extract來分解,你用
    print_r($HTTP_POST_FILES);察看一下就知道了。$file等效於$HTTP_POST_FILES['file'][tmp_name].你用extract分解只會得到數組$file