我有php上传问题,我有以下代码:
define('GW_UPLOADPATH', '/var/www/train/ch5/images/');
$name = $_POST['name'];
$score = $_POST['score'];
$screenshot = $_FILES['screenshot']['name'];
$target = GW_UPLOADPATH.$screenshot;
echo $_FILES['screenshot']['tmp_name'].'<br/>';
move_uploaded_file($_FILES['screenshot']['tmp_name'], $targe)
or die("Upload Error!");
我收到上传错误!上传文件的临时文件是:
的/ tmp / php9Khayp
但在/ tmp我找不到这个文件。我正在研究Ubuntu 10.10。有谁能说我问题出在哪里?
apache error.log:[Wed Aug 10 20:54:17 2011] [error] [client ::1] PHP Warning: move_uploaded_file(/var/www/train/ch5/images/phizsscore.gif): failed to open stream: Permission denied in /var/www/train/ch5/addscore.php on line 22, referer: http://localhost/train/ch5/addscore.php
[Wed Aug 10 20:54:17 2011] [error] [client ::1] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpmkZEr3' to '/var/www/train/ch5/images/phizsscore.gif' in /var/www/train/ch5/addscore.php on line 22, referer: http://localhost/train/ch5/addscore.php
[Wed Aug 10 20:54:18 2011] [error] [client ::1] File does not exist: /var/www/favicon.ico
答案 0 :(得分:4)
你有一个错字。 $targe
应为$target
。
move_uploaded_file($_FILES['screenshot']['tmp_name'], $targe)
---------------------------------------^^^^^^
否则,您永远无法在/tmp
中看到该文件,因为它只会在PHP脚本的生命周期内持续存在。脚本执行完成后,文件将被清除。在脚本终止后,您无法在磁盘上访问它,除非成功调用move_uploaded_file()
。
<强>更新强>
如果$target
变量不是问题,请确保Apache Web服务器用户(www-data,httpd,apache是possibilites)具有对目标/var/www/train/ch5/images/
的写访问权限:
# assuming the Apache user is apache...
sudo chown root:apache /var/www/train/ch5/images/
sudo chmod g+rwx /var/www/train/ch5/images/
答案 1 :(得分:2)
您的代码是否有权将文件写入/ tmp?
apache错误日志会说什么吗?