2017-02-18 24 views
-1

我的目標:
我想創建登記表,當註冊成功的是讓我直接到「用戶配置 - >索引頁」。PHP - 無法創建新的文件夾和新的文件由於Linux許可

目錄:
註冊頁面:myproject的/帳號/ create.php
用戶配置 - >索引頁:myproject的/資料/ nameuser/index.php文件

步驟它是如何工作的:
1.填寫報名表
2.提交表單
3.如果失敗,再充入直到成功
4.如果成功,轉到文件夾配置文件,然後創建爲新用戶(它表示用戶文件夾)的唯一新文件夾,然後在用戶文件夾中創建索引頁,然後使每個用戶訪問其各個索引頁。

我的問題:
我想在PHP中使用方法的mkdir(),但它不能解決因拒絕授權
如果在Linux的任何配置來解決,我不知道是什麼就是這樣

我的代碼:

if (empty($err)) { 
    if ($insert_stmt = $mysqli->prepare("INSERT INTO member (uname, mail, pwd) VALUES (?, ?, ?)")) { 
     $insert_stmt->bind_param('sss', $uname, $mail, $pwd); 
     if (! $insert_stmt->execute()) { 
      header('Location: ../error.php?err=Registration failure: INSERT'); 
     } 
    } 
    $directory = "../profile/$uname"; 
    if(!is_dir($directory)) { 
     mkdir("$directory"); 
     touch('$directory/index.php'); 
    } 
    header('Location: $directory . index.php'); 
} 

希望有人能幫助我解決我的問題。

回答

0

着手創建目錄嘗試將項目文件夾的權限更改爲700或777

chmod -R 755 myproject/ 

如果之前它仍然沒有工作許可777

chmod -R 777 myproject/ 

,也同時嘗試使用mkdir創建目錄您應該同時分配權限

mkdir("$directory", 0755); 
+0

你確定如果用戶無法創建目錄,他將能夠更改目錄權限? – reza

+0

正在更改的權限是項目文件夾。我也編輯了答案並添加了新的mkdir();功能很少修改。 –

+0

這是與777一起工作,但它的安全嗎? – drisoel

0

Usualy您的服務器在與您的計算機上的用戶帳戶不同的用戶帳戶上運行。 Apache可以讀取你的文件發送給你的客戶端,但是它沒有對你的文件的寫入權限。

選項:

選項之一,令您在使用http://php.net/manual/en/function.chmod.php文件夾可寫的,但是這可能是一個安全問題,有些主機將成爲一個500(內部)錯誤,如果他們發現你的用戶文件夾的任何777的文件夾。一個技巧是使用chmod(0777),在寫入之後寫入文件並重新寫入chmod(0755或0644)。檢查linux權限,如果您需要在'代碼'https://www.linux.com/learn/understanding-linux-file-permissions上領先。你不提供正確的代碼,使其haappend你,但它會是這樣的

$perm=substr(sprintf('%o', fileperms('../profile/')), -4); //current perm 

chmod ("../profile/", "0777"); //make the parent folder writable 

mkdir("$directory"); 
touch('$directory/index.php'); 

chmod ("../profile/", $perm); // make it back to old perms. 

另一種選擇是你和Apache添加到組廣告,然後給寫權限,這個組,但是這將是換另一個堆棧交換站點。

你也可以創建一個文件夾和chown(改變onwership)到apache,但它又有缺陷,因爲當你想自己寫它時。

注意:您的probem的所有解決方案都受操作系統文件許可。你需要站在你的用戶,apache用戶甚至一些主機使用php的用戶之間的區別。

+0

當我編輯到您的代碼時,它顯示:Warning:fileperms():stat failed對於../,警告:chmod():操作不允許在/中,警告:mkdir():在/中拒絕權限警告:touch():無法創建文件,並且警告:chmod() / – drisoel

相關問題