2017-08-29 160 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