您好我正在尝试从我的Android应用程序上传图像文件到我的服务器。似乎我无法将任何文件上传到我的服务器而不是特定的目录(图片)。如果我尝试上传到pics的子目录,那么fopen返回false。 这是我的php文件
<?php
$base=$_REQUEST['image'];
$picname=$_REQUEST['picname'];
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
//$shapicname = SHA1($picname);
$dir1 = 'pics/'.substr($picname,0,2);
$dir2 = substr($picname,2,2);
$targetfilename1 = $dir1;
$targetfilename2 = $dir2;
if (!file_exists($dir1)) {
mkdir($dir1); //create the directory
chmod($targetfilename1, 0777); //make it writable
}
//chdir($dir1);
$file = fopen('/var/www/html/'.$dir1.'/'.$picname, 'wb');
if (!$file) {
echo "false ".$dir1.$picname;
}
else {
$fwrite = fwrite($file,$binary);
fclose($file);
echo "uploaded".$fwrite.$file;
}
?>
pics文件夹归apache用户所有,拥有0777权限
有什么想法吗?
我发布了php错误日志
[Thu Aug 02 18:32:34 2012] [error] [client xx.xx.Xxx.xx] PHP警告:fopen():安全模式限制有效。 uid / gid为0/0的脚本不允许访问第23行/var/www/html/uploadshaimage.php中uid / gid 48/48所拥有的/ var / www / html / pics / 53 [Thu Aug 02 18:32:34 2012] [error] [client xx.xx.Xxx.xx] PHP警告:fopen(/var/www/html/pics/53/5344.jpg):无法打开流:第23行的/var/www/html/uploadshaimage.php中没有这样的文件或目录
答案 0 :(得分:1)
答案 1 :(得分:0)
你知道,我不禁想知道,你确定路径真的是'/var/www/html/'.$dir1.'/'.$picname
吗?您使用$dir1
的相对路径,但fopen
中的绝对路径。如果您从一开始就将$dir1
设置为绝对路径会发生什么?
FWIW,您输出的内容也有错误的内容类型。
答案 2 :(得分:0)
好的我找到了2个解决方案
一个。在php.ini上关闭safe_mode(有点危险!)
B中。递归地将pics目录的权限提供给子目录(gid是问题!)
感谢大家的帮助