【发布时间】:2012-08-02 16:26:58
【问题描述】:
您好,我正在尝试将图像文件从我的 android 应用程序上传到我的服务器。似乎我无法将任何文件上传到我的服务器而不是特定目录(图片)。如果我尝试上传到图片的子目录,那么 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 错误日志
[2012 年 8 月 2 日星期四 18:32:34] [错误] [客户端 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 [2012 年 8 月 2 日星期四 18:32:34] [错误] [客户端 xx.xx.Xxx.xx] PHP 警告:fopen(/var/www/html/pics/53/5344.jpg):无法打开流:第 23 行的 /var/www/html/uploadshaimage.php 中没有这样的文件或目录
【问题讨论】:
-
您还必须检查
$dir1实际上是一个目录 - 它可能是一个具有相同名称的普通文件。并且还必须检查is_writeable()。 -
有错误吗?检查错误日志。
-
如果 $dir1 不存在,它实际上会创建它并赋予它适当的权限,至于 is_writeable() 你的意思是文件吗?
-
如果 fopen 返回 false,您应该会收到警告(在日志中或屏幕上,具体取决于
display_errors的设置)。警告内容是什么?