我刚跳进了Drupal 8,我在项目中启用基于文件的配置时遇到了麻烦。我正在使用这些说明:https://www.drupal.org/node/2416555
我已按照所有步骤操作,但每次尝试更改配置时,都会出现以下错误:
Drupal\Core\Config\StorageException: Failed to create config directory
./../config/active in Drupal\Core\Config\FileStorage->ensureStorage()
(line 72 of /Users/bbalan/Sites/d8project/web/core/lib/Drupal/Core/Config/FileStorage.php).
我认为我的settings.php中的路径有问题。说明可能出于安全原因使用Web根目录之外的路径。这就是我所拥有的:
$config_directories = array(
CONFIG_ACTIVE_DIRECTORY => './../config/active',
CONFIG_STAGING_DIRECTORY => './../config/staging',
CONFIG_SYNC_DIRECTORY => './../config/sync',
);
我将所有配置目录权限设置为777,并且已经手动创建了活动/暂存/同步目录(也使用777)。以下是我的项目文件夹的内容:
-rw-r--r-- 1 bbalan staff 18046 8 Aug 15:22 LICENSE
-rw-r--r-- 1 bbalan staff 4787 8 Aug 15:22 README.md
-rw-r--r-- 1 bbalan staff 2299 8 Aug 17:35 composer.json
-rw-r--r-- 1 bbalan staff 206302 8 Aug 17:35 composer.lock
drwxrwxrwx 6 bbalan staff 204 8 Aug 15:36 config
drwxr-xr-x 4 bbalan staff 136 8 Aug 15:22 drush
-rw-r--r-- 1 bbalan staff 481 8 Aug 15:22 phpunit.xml.dist
drwxr-xr-x 3 bbalan staff 102 8 Aug 15:22 scripts
drwxr-xr-x 42 bbalan staff 1428 8 Aug 17:36 vendor
drwxr-xr-x 19 bbalan staff 646 8 Aug 17:23 web
这是使用Composer根据https://github.com/drupal-composer/drupal-project的说明构建的Drupal 8.1.8安装。所有Drupal站点文件都在/web
中。这是我的httpd-vhosts.conf:
<VirtualHost *:80>
ServerName drupal-8.local
ServerAlias drupal-8.local
DocumentRoot /Users/bbalan/Sites/d8project/web/
<Directory /Users/bbalan/Sites/d8project/web/>
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
有什么想法吗?如果我将/config
目录移动到Web根目录中的某个位置(例如,/sites/default/files/config
),一切都有效,但这似乎不安全并且与指令相反。
感谢您的帮助!
答案 0 :(得分:0)
我不建议将配置目录设置为777. 755是一种更好的方法,因为它允许所有者和组成员进行读写。如果要允许组成员执行,也可以尝试775。此外,请确保Web服务器用户是该组的一部分。 Apache通常使用www-data。我还建议将配置目录移动到sites/default/sync
。
$config_directories = array(
CONFIG_ACTIVE_DIRECTORY => 'sites/default/config/active',
CONFIG_STAGING_DIRECTORY => 'sites/default/config/staging',
CONFIG_SYNC_DIRECTORY => 'sites/default/config/sync',
);
确保这些目录存在且Web服务器是组staff
的一部分。
我要检查的另一件事是Drupal的状态,看看它在那里告诉你什么。