问题描述
安装owncloud时发生以下报错:
Can’t create or write into the data directory /data/owncloud
请确保文件根目录下包含一个名为“.ocdata”的文件
Data directory *** not writable by owncloud
如下图:


问题分析
检查php error log,发现存在以下错误日志
Message: is_dir(): open_basedir restriction in effect. File(/mnt/web_site_log/www.aaa.com/) is not within the allowed path(s): (/vagrant/vbee2:/tmp/:/proc/)
message”:”realpath(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home/wwwroot/owncloud/:/tmp/:/proc/) at /home/wwwroot/owncloud/lib/private/Files/Storage/Local.php#365″}
提取关键信息,应该是
open_basedir
设置问题,open_basedir限制了PHP能操作的目录。解决方法
将PHP需要操作的目录加入到open_basedir中,
我使用的是LNMP环境,故以nginx为例来写解决办法。
1.配置nginx fastcgi fastcgi_param
vim /usr/local/nginx/conf/fastcgi.conf
找到open_basedir所在行,修改或添加成以下代码
# set php open_basedir
fastcgi_param PHP_ADMIN_VALUE “open_basedir=$document_root/:/tmp/:/proc/”;
#这里用$document_root是一种取巧的方法,也可以设置绝对路径
注意:对于将owncloud数据文件保存在网站目录以外的路径,需要加上数据文件的路径!!!
如:将owncloud数据文件保存在/data/owncloud,需要修改或添加成以下代码
fastcgi_param PHP_ADMIN_VALUE “open_basedir=$document_root/:/tmp/:/proc/:/data/owncloud/”;
2.配置php.ini
vim /usr/local/php/etc/php.ini
找到open_basedir所在行,修改或添加成以下代码:
[HOST=www.aaa.com]
open_basedir=/home/wwwroot/owncloud/:/proc/:/tmp/
同样,对于将owncloud数据文件保存在网站目录以外的路径,需要加上数据文件的路径。
[HOST=www.aaa.com]
open_basedir=/home/wwwroot/owncloud/:/proc/:/tmp/:/data/owncloud/
修改完毕后,重启nginx和PHP,问题解决。