簡體   English   中英

403在PHP mkdir上禁止

[英]403 Forbidden on php mkdir

使用mkdir函數執行php腳本時,我的頁面為403 Forbidden。

這是mkdir代碼:

mkdir('uploads/'.$upload_folder.'/', 777)

我嘗試了775、666的權限,但沒有任何操作。 我想要存儲圖像,mp3和視頻的目錄。 誰能幫我?

更新1

這是整個腳本:

$folderStr = $_REQUEST['folderName'];

//create SEO firndly directory name
$upload_folder =    preg_replace("'\s+'", '-', $folderStr);

// The place the files will be uploaded to (currently a 'files' directory).
$upload_path = 'uploads/'.$upload_folder.'/';

//Check whether folder exists or create with the name supplied
if(is_dir($upload_folder))
echo 'directory exists';
else
mkdir('uploads/'.$upload_folder.'/', 777);

它應該使用從表單中給定的名稱在目錄“ uploads”中創建一個新目錄,然后從文件夾中獲取它的值“ folderName”,然后將表單中給定的文件上傳到創建的新目錄中。 而且它不能在文件夾名稱上寫希臘字符。 我必須更改使其工作嗎?

您需要在所需模式前面加零,例如

mkdir('uploads/'.$upload_folder.'/', 0777)

如果您使用'777',您將獲得如下奇怪的權限:

dr----x--t

代替這個:

drwxrwxr-x

原因(來自PHP chmod文檔): “請注意,不會自動將模式假定為八進制值,因此,為確保預期的操作,您需要在模式前加上零(0)。”

我可以確認,盡管對整數處理進行了相關更改 ,PHP 7.0.3仍然會發生這種情況:“以前,包含無效數字的八進制立即被截斷(0128被視為012)。現在,無效的八進制立即將引起解析。錯誤。”

不過,無論如何,默認值都是0777,它提供了盡可能廣泛的訪問權限,因此您無需指定它, 除非您想要設置任何以后的參數(例如,通常將第三個選項設置為true可以啟用遞歸目錄的創建,而不是在父級不存在時創建錯誤。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM