使用django搞一個東西玩,python manager.py runserver的時候,一切正常。将項目部署到apache之後,出現了問題。
定位到問題所在:
為什麼apache裡面認為這個目錄不存在了呢,檢視isdir的定義:
并沒有什麼特别的。
經過分析,懷疑是權限問題導緻的,python manager.py runserver的時候,是以我的使用者名啟動的;部署到apache的時候,是以www-data使用者名啟動的。修改apache.conf中的啟動使用者名和使用者組之後,sudo /etc/init.d/apache restart後,可以使用了。當然也可以把working_dir以及上層目錄的權限設定一下。
問題複現:
先建立測試用的目錄結構
sudo mkdir /tmp/test
sudo mkdir /tmp/test/hello
sudo chmod -R 700 /tmp/test
啟動python:$ python,輸入
得到False
以root啟動python: $ sudo python,輸入
得到True
結論,即使目錄存在,os.path.isdir也可能因為權限問題而傳回False,并且沒有任何異常和警告。