我正试图创建一个新目录来处理个人资料图片,但每次上传图像时,都不会发生任何事情,因为新目录中没有创建,也没有任何错误。我已经查看了Apache错误日志,但没有注意到任何与我最近的代码有关的错误。。。
这是我的代码示例
//profile image upload script
if (isset($_FILES['profile_pics'])) {
if (((@$_FILES["profile_pics"] ["type"] == "image/jpeg" || (@$_FILES["profile_pics"] ["type"] == "image/png") || (@$_FILES["profile_pics"] ["type"] == "image/gif")) && (@$_FILES["profile_pics"] ["size"] < 1048576)) ) // LESS THAN ONE MEGABYTE
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$rand_dir_name = substr(str_shuffle($chars), 0, 15);
mkdir("userdata/profile_pics/$rand_dir_name");
else {
}
}}
您的PHP中有多个错误,您确定在apache日志中没有看到任何致命错误吗?
- 您的
if
查询未正确关闭 - 您的
else
语句缺少制动器 - 您正在使用
@
抑制任何错误-删除它们 - 使用绝对路径而不是相对路径,以避免在创建目录时出错
下面是一个应该如何显示的示例:
// array of valid image types
$valid = array( 'image/jpeg', 'image/png', 'image/gif' );
if (isset($_FILES['profile_pics'])) {
// if the file type is in the valid array and the size is less than 1MB
if ( in_array($_FILES['profile_pics']['type'], $valid)
&& ($_FILES["profile_pics"]["size"] < 1048576) )
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$rand_dir_name = substr(str_shuffle($chars), 0, 15);
mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name");
} else {
print( 'too big or not an image.' );
}
}
编辑
您还应该检查mkdir
响应。。像这样:
$ok = mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name");
if( !$ok )
{
print('error creating directory, check your permissions');
} else {
print('created directory successfully!');
}
尝试添加权限。
mkdir("/path/",0755);