2011-08-10 51 views
3

我有PHP上传的问题,我有以下代码: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

回答

2

请问你的代码有权限将文件写入到/ tmp?

apache错误日志会说什么吗?

+0

我该如何检查它是否有? – user873286

4

你有一个错字。 $targe应该是$target

move_uploaded_file($_FILES['screenshot']['tmp_name'], $targe) 
       ---------------------------------------^^^^^^ 

否则,你将永远无法看到文件中/tmp因为它只持续了PHP脚本的寿命。一旦脚本执行完成,文件将被清除。除非成功调用move_uploaded_file(),否则在脚本终止后您无法在磁盘上访问它。

UPDATE

如果$target变量是没有问题的,请确保Apache Web服务器用户(WWW的数据,httpd的,阿帕奇是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/ 
+0

$ target不是问题 – user873286

+0

@ user873286看到我的更新关于Apache能够写入您的目标文件夹然后。 –

+0

没有结果!我甚至用root用户试过! – user873286