是不是你的 php.ini register_globals = off ?

解决方案 »

  1.   

    <form name="form1" method="post" action="upload.php" enctype="multipart/form-data" >
      <input type="file" name="userfile" class=btnface>  
      <input class=btnface type="submit" name="Submit" value="上  传">
    </form>
    B页面:
    $userfile = $_FILE['userfile']['temp_name'];
    $userfile_name = $_FILE['userfile']['name'];
    if (!copy($userfile,"./images/album/".$userfile_name))
        {
      echo("上传文件 $userfile_name 时发生错误!\n");
      exit;
        }
      

  2.   

    更正一下,刚刚写错了,$_FILE 应该改成$_FILES
      

  3.   

    51.net上的虚拟空间php版本都不高,默认register_globals是打开的,我估计你本机装的php版本稍微新一些,register_globals默认是关闭的,所以你必须这样取得post过来的变量
      

  4.   

    谢谢两位
    register_globals 确实为On,
    照上面改动后B页面后,仍然无法实现上传……错误依旧啊
    我的配置是:apache2.0.54 php 4.4.0
      

  5.   

    upload_tmp_dir设置了没???
    比如:
    upload_tmp_dir = E:\web\php\temp
      

  6.   

    老兄,你的目录有没有设置成可写啊?
    在linux下执行:
    chown nobody:nobody yourdirectory
      

  7.   

    to 21bird(世纪菜鸟:sailing) upload_tmp_dir已设置好了的,就算不设置,也有一个默认的目录 windows/temp
    TO zhwb36() 我在B页面里用mkdir可以建立目录,权限应该够啊。另外,我现在用的是XP prefessional系统
      

  8.   

    没有错误信息显示,我说的错误就是我定义输出的:上传文件×××时发生错误
    我也想得到系统的错误信息,但是没有显示。
    下面我PHP.INI里面的 错误处理和记录 一段的内容:
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Error handling and logging ;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; error_reporting is a bit-field.  Or each number up to get desired error
    ; reporting level
    ; E_ALL             - All errors and warnings
    ; E_ERROR           - fatal run-time errors
    ; E_WARNING         - run-time warnings (non-fatal errors)
    ; E_PARSE           - compile-time parse errors
    ; E_NOTICE          - run-time notices (these are warnings which often result
    ;                     from a bug in your code, but it's possible that it was
    ;                     intentional (e.g., using an uninitialized variable and
    ;                     relying on the fact it's automatically initialized to an
    ;                     empty string)
    ; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
    ; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
    ;                     initial startup
    ; E_COMPILE_ERROR   - fatal compile-time errors
    ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
    ; E_USER_ERROR      - user-generated error message
    ; E_USER_WARNING    - user-generated warning message
    ; E_USER_NOTICE     - user-generated notice message
    ;
    ; Examples:
    ;
    ;   - Show all errors, except for notices
    ;
    error_reporting = E_ALL & ~E_NOTICE
    ;
    ;   - Show only errors
    ;
    ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
    ;
    ;   - Show all errors except for notices
    ;
    ;error_reporting  =  E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR; Print out errors (as a part of the output).  For production web sites,
    ; you're strongly encouraged to turn this feature off, and use error logging
    ; instead (see below).  Keeping display_errors enabled on a production web site
    ; may reveal security information to end users, such as file paths on your Web
    ; server, your database schema or other information.
    display_errors = On; Even when display_errors is on, errors that occur during PHP's startup
    ; sequence are not displayed.  It's strongly recommended to keep
    ; display_startup_errors off, except for when debugging.
    display_startup_errors = On; Log errors into a log file (server-specific log, stderr, or error_log (below))
    ; As stated above, you're strongly advised to use error logging in place of
    ; error displaying on production web sites.
    log_errors = On; Set maximum length of log_errors. In error_log information about the source is
    ; added. The default is 1024 and 0 allows to not apply any maximum length at all.
    log_errors_max_len = 1024; Do not log repeated messages. Repeated errors must occur in same file on same
    ; line until ignore_repeated_source is set true.
    ignore_repeated_errors = Off; Ignore source of message when ignoring repeated messages. When this setting 
    ; is On you will not log errors with repeated messages from different files or
    ; sourcelines.
    ignore_repeated_source = Off; If this parameter is set to Off, then memory leaks will not be shown (on
    ; stdout or in the log). This has only effect in a debug compile, and if 
    ; error reporting includes E_WARNING in the allowed list
    report_memleaks = On; Store the last error/warning message in $php_errormsg (boolean).
    track_errors = On; Disable the inclusion of HTML tags in error messages.
    html_errors = Off
      
    ; If html_errors is set On PHP produces clickable error messages that direct 
    ; to a page describing the error or function causing the error in detail.
    ; You can download a copy of the PHP manual from http://www.php.net/docs.php 
    ; and change docref_root to the base URL of your local copy including the
    ; leading '/'. You must also specify the file extension being used including 
    ; the dot.
    ;docref_root = "/phpmanual/"
    ;docref_ext = .html
      
    ; String to output before an error message.
    ;error_prepend_string = "<font color=ff0000>"; String to output after an error message.
    ;error_append_string = "</font>"; Log errors to specified file.
    error_log = "/error.log"; Log errors to syslog (Event Log on NT, not valid in Windows 95).
    error_log = syslog
      

  9.   

    又试了一下,把error_reporting = E_ALL & ~E_NOTICE 改成 error_reporting = E_ALL,得到错误信息,说是UPLOAD临时文件夹不在网站文件夹下,更改upload_tmp_dir 后解决,谢谢各位!回复者皆有分!给 空格 和 21世纪菜鸟 各加 20 ,谢谢!