php中上传图片的问题

yplin 2005-11-15 01:49:04
A页面向B页面(upload.php)传递参数,B页面负责把文件上传
代码如下:
A页面:
<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页面:
if (!copy($userfile,"./images/album/".$userfile_name))
{
echo("上传文件 $userfile_name 时发生错误!\n");
exit;
}

这段代码以前放在51.net网站上可以正常运行,但现在我在自己的机器上(xp professional)上运行的时候始终不能上传(php和APACHE运行正常),难道是目录的权限问题吗?应该不会吧
...全文
394 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
某鸟 2005-11-24
  • 打赏
  • 举报
回复
才认出来……是不是你小子?前几年在那边说抢银行的那个?哈哈
zhwb36 2005-11-16
  • 打赏
  • 举报
回复
老兄,你的目录有没有设置成可写啊?
在linux下执行:
chown nobody:nobody yourdirectory
某鸟 2005-11-16
  • 打赏
  • 举报
回复
upload_tmp_dir设置了没???
比如:
upload_tmp_dir = E:\web\php\temp
yplin 2005-11-16
  • 打赏
  • 举报
回复
谢谢两位
register_globals 确实为On,
照上面改动后B页面后,仍然无法实现上传……错误依旧啊
我的配置是:apache2.0.54 php 4.4.0
yplin 2005-11-16
  • 打赏
  • 举报
回复
又试了一下,把error_reporting = E_ALL & ~E_NOTICE 改成 error_reporting = E_ALL,得到错误信息,说是UPLOAD临时文件夹不在网站文件夹下,更改upload_tmp_dir 后解决,谢谢各位!

回复者皆有分!给 空格 和 21世纪菜鸟 各加 20 ,谢谢!
yplin 2005-11-16
  • 打赏
  • 举报
回复
没有错误信息显示,我说的错误就是我定义输出的:上传文件×××时发生错误
我也想得到系统的错误信息,但是没有显示。
下面我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
spacet 2005-11-16
  • 打赏
  • 举报
回复
你说不能上传,到底错误信息是上面呢?
yplin 2005-11-16
  • 打赏
  • 举报
回复
to 21bird(世纪菜鸟:sailing) upload_tmp_dir已设置好了的,就算不设置,也有一个默认的目录 windows/temp
TO zhwb36() 我在B页面里用mkdir可以建立目录,权限应该够啊。另外,我现在用的是XP prefessional系统
spacet 2005-11-15
  • 打赏
  • 举报
回复
51.net上的虚拟空间php版本都不高,默认register_globals是打开的,我估计你本机装的php版本稍微新一些,register_globals默认是关闭的,所以你必须这样取得post过来的变量
spacet 2005-11-15
  • 打赏
  • 举报
回复
更正一下,刚刚写错了,$_FILE 应该改成$_FILES
spacet 2005-11-15
  • 打赏
  • 举报
回复
<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;
}
piner 2005-11-15
  • 打赏
  • 举报
回复
是不是你的 php.ini register_globals = off ?

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧