我想在上傳圖片時根據當前日期按年月日來放圖片,於是就有了如下代碼
以上代碼在本地測試環境(PHP+apache+MySQL)測試通過沒有問題。但當我上傳代碼到伺服器的時候會報如下錯誤
Warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(D:\hosting) is not within the allowed path(s): (D:\hosting\wwwroot\;D:\hosting\System\;C:\WINDOWS\Temp\) in D:\hosting\wwwroot\obbzz_com\htdocs\mytest.php on line 47
請問這種情況一般是由什麼原因導致的?
回複內容:
我想在上傳圖片時根據當前日期按年月日來放圖片,於是就有了如下代碼
以上代碼在本地測試環境(PHP+apache+MySQL)測試通過沒有問題。但當我上傳代碼到伺服器的時候會報如下錯誤
Warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(D:\hosting) is not within the allowed path(s): (D:\hosting\wwwroot\;D:\hosting\System\;C:\WINDOWS\Temp\) in D:\hosting\wwwroot\obbzz_com\htdocs\mytest.php on line 47
請問這種情況一般是由什麼原因導致的?
你產生多級目錄的地方有問題,php不可能一次產生多級目錄date("Y/m/d"),你必須迴圈檢測目錄是否存在,如果不存在然後再一級一級的建立
看來明顯是沒有翻閱過 PHP 官方文檔
http://php.net/manual/en/function.mkd...
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
第三個參數為 true 就可以了,類似於 Java 的 File.mkdirs
下面這個是我使用的函數,挺好用的。
function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; } if(!mkdir($dir,0777)){ return false; } chmod($dir, 0777); } return true; }