在Windows以下工作:PHP Mkdir沒有遞歸執行?
mkdir('../my/folder/somewhere/on/the/server', 0777, true);
我談論PHP mkdir。
它工作完美,並遞歸創建子文件夾。但是,如果我在Linux服務器上運行相同的命令,則不會創建文件夾。
此前我通過分解路徑和逐個創建每個文件夾來解決此問題。但我不想這樣做,因爲它應該將「resurive」標誌設置爲true。爲什麼它不工作?
在Windows以下工作:PHP Mkdir沒有遞歸執行?
mkdir('../my/folder/somewhere/on/the/server', 0777, true);
我談論PHP mkdir。
它工作完美,並遞歸創建子文件夾。但是,如果我在Linux服務器上運行相同的命令,則不會創建文件夾。
此前我通過分解路徑和逐個創建每個文件夾來解決此問題。但我不想這樣做,因爲它應該將「resurive」標誌設置爲true。爲什麼它不工作?
對不起,但除了mkdir
命令本身之外,一定會有一些問題。
這個小例子按預期工作和遞歸在Linux上運行,我創建的目錄:
#!/usr/bin/php
<?php
mkdir ('testdir/testdir2/testdir3',0777,TRUE);
?>
這是發現
..
總是使用真實路徑的東西...例
$fixedRoot = __DIR__;
$recusivePath = 'my/folder/somewhere/on/the/server';
if (is_writable($fixedRoot) && is_dir($fixedRoot)) {
mkdir($fixedRoot . DIRECTORY_SEPARATOR . $recusivePath, 0, true);
} else {
trigger_error("can write to that path");
}
確保你的PHP用戶(例如www-data
)具有寫權限的任何文件夾的父文件夾它正在努力創造。 PHP需要能夠寫入已經存在的最低版本。
例如,在../my/folder/somewhere/on/the/server
的情況下,如果../my
已經存在和PHP是能夠寫入..
但不my
,mkdir
將失敗。
如果您的用戶是www-data
,則可以使用sudo chown -R www-data:www-data ../my
爲my
及其所有子文件夾提供寫入權限。
PHP,NOT命令行。 – coderama
閱讀手冊頁非常有用 - http://linux.die.net/man/1/mkdir –
適合我(在Linux內部)。 – arkascha