2017-08-29 156 views
3

我已经获得了upload_files脚本以在我的开发服务器(XAMPP Apache 2.4.17和PHP 5.6.23)上工作,但是我无法让它在我的生产服务器上运行(Synology diskstation,apache 2.2 .31 php 5.6.30)无法使用mkdir创建目录

它无法在数据目录(数据目录中存在)中创建目录SY2017_18。数据目录具有以下权限: drwxrwxr-X 1个管理员用户234 Aug29 09:59数据

我已经检查php.ini并:

file_uploads = On 
upload_tmp_dir = "var/services/tmp" 

任何帮助极大的赞赏。

// upload_files script 
if(isset($_FILES['my_file'])){  
    $errors= array(); 
    $file_name = $_FILES['my_file']['name']; 
    $file_size =$_FILES['my_file']['size']; 
    $file_tmp =$_FILES['my_file']['tmp_name']; 
    $file_type=$_FILES['my_file']['type']; 
    $file_ext=strtolower(end(explode('.',$_FILES['my_file']['name']))); 
    $extensions= array("jpg","png"); 

if(in_array($file_ext,$extensions)=== false){ 
    $errors[]="extension not allowed, please choose a Spreadsheet file."; 
} 

if($file_size > 2097152){ 
    $errors[]='File size must be less than 2 MB'; 
} 

if(empty($errors)==true){ 
    $folder = $_SERVER['DOCUMENT_ROOT']."/pdo/data/SY".$thisschoolyear; 
    if(!is_dir($folder)){ 
     if (mkdir($folder, 0755)) { 
     } else echo "NO luck creating the folder $folder<br>"; 
    } 
} 

}

+1

嗨,看看这个线程https://stackoverflow.com/questions/927564/how-to-find-a-reason-when-mkdir-fails-from-php,它可以帮助你了解原因mkdir返回false。 –

+0

作为权限问题的快速检查,将目录更改为777,然后查看它是否有效。 –

+0

长,我已经阅读了很多关于这个问题的文章,并且总是由于语法错误而导致mkdir失败。如上所述,我的代码完全适用于XAMPP,所以我总是很确定问题是权限。不幸的是,我是Linux的新手,所以这对我来说是全新的领域。 – Crookers

回答

2

确保在你的代码是创建$文件夹的目录,有它的所有者设为Apache

最好的方法是检查您是否获得了ini_setting这样的许可等通知(只有在错误关闭的情况下)您的脚本的顶部。

ini_set("display_errors", 1); 
error_reporting(E_ALL & ~E_NOTICE); 

这也会显示通知。

祝你好运!

+0

好吧,我打开显示错误,并得到了我期待的错误 - 权限被拒绝。不知道任何有关Linux的价值,开始工作。首先,我尝试按照您的建议将用户设置为Apache,并认为这将是“开箱即用”的用户,但我得到的用户无效:aApachea。所以我创建了一个用户(sudo useradd Apache),但得到了错误消息:useradd:command not found – Crookers

+0

我不知道你使用了哪一堆命令。这个可能对你有帮助, https://askubuntu.com/questions/520634/giving-ownership-of-the-directory-to-the-apache-user –

+0

诺曼,我不明白的东西是此用户(Apache - 在此目录中拥有权限的用户)与任何想要上载文件的用户之间的连接。我目前有一个用户(管理员),所以为什么要改变它? – Crookers