第一个问题已经有一段时间了。基本上,我有一些代码(1)在现场环境中完美运行,(2)用于在我的家庭OSX环境中工作,但(3)现在不起作用。
HTML:
<form id="upload_form" action="php/upload_class_list.php" method="post" accept-charset="UTF-8" enctype="multipart/form-data" target="upload_target" >
<label>File:</label>
<input name="myfile" type="file" size="35" />
<input id="upload_submit" type="submit" value="Upload" />
<iframe id="upload_target" name="upload_target" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
PHP文件:
$destination_path = getcwd().DIRECTORY_SEPARATOR;
$result = 0;
$target_path = $destination_path . basename( $_FILES['myfile']['name']);
if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
...
}
sleep(1);
?>
<script language="javascript" type="text/javascript">top.upload_class_list(<?php echo $result; ?>);</script>
脚本最后会触发,但PHP代码不会进入if
(在本地开发环境中),因此$result
保持为0。
似乎没有拿起要上传的文件的path
; $destination_path
指向PHP文件所在的文件夹,而不是指向找到该文件的位置。
我认为当我更改为Mountain Lion并重建PHP设置时,我的本地环境可能已停止工作。
停止找到文件缺少什么?
让我强调一下:完全相同的代码在我的实时Hostmonster设置中运行良好,所以这是一个环境问题,我想:)
感谢。
答案 0 :(得分:5)
if(@move_uploaded_file($ _ FILES ['myfile'] ['tmp_name'],$ target_path)){
... }停止找到文件缺少什么?
是什么让您认为问题是找到的文件?可能找到 文件,但失败的是move
...例如因为Web服务器没有权限写入target_path
。
您可以查看:
$src = $_FILES['myfile']['tmp_name'];
$dst = $target_path;
if (!file_exists($src))
die("Okay, the file is actually not found");
if (!is_readable($src))
die("Very bad hosting juju. The file was uploaded but I can't read it?!?");
if (!is_writeable($destination_path))
die("As expected, you can't upload a file here. This is a good thing.");
@touch($dst);
if (!file_exists($dst))
die("So call me a Marine, the file SHOULD be writeable (which is not so good), and yet I could not write it! Perhaps disk full? User overquota? Some weird security setup?");
这是一件好事的原因是因为该目录包含可执行的PHP文件,如果有人可以在那里上传PHP文件,那么这将是一个主要的安全漏洞。
你可以留出另一个目录并使其可写(记得放入.htaccess或其他系统禁止从外部读取/执行访问)。
答案 1 :(得分:-1)
可能是这个
<?php
$target = "upload/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['uploaded']['name']). " has been uploaded";
}
else {
echo "Sorry, there was a problem uploading your file.";
}
?>