在使用 WordPress 的时候,可能会遇到不能上传文件,或者不能在线升级,安装插件的时候提示输入 FTP 相关的信息,这些问题在 Drupal 上也可能会遇到。
如果你想让应用可以上传文件,或者可以在线升级,下载安装插件等等,你需要为特定的目录去配置合适的权限。一般你要保证应用使用的临时目录有可以写入的权限,还有存储上传文件,插件,模块的目录也拥有写入的权限。
如果你的运行环境使用的是 Apache 作为 Web 服务器,你需要保证运行 Apache 的用户或用户组在这些地方拥有写入权限。如果用的是 NGINX,你要保证运行 PHP-FPM 的用户或用户组在这些地方拥有写入的权限。
如果不在 PHP 的配置文件里指定临时目录的位置的话,一般 WordPress 跟 Drupal 默认都会使用系统根目录下面的 tmp 这个目录作为临时目录 .. 一般人在这个目录上都拥有可以写入的权限。所以通常我们不太担心它,除非应用提示你,找不到临时目录,或者没有可以写入临时目录的权限。
在 WordPress 上,你也可单独去定制这个临时目录的位置,方法就是在 wp-config.php 里面,去定义一下 WP_TEMP_DIR 这个常量的值 .. Drupal 可以在文件系统的设置界面,去修改这个临时目录的位置 ... 你会看到,默认就是 /tmp ..
除了这个临时目录以外,你还要保证存储上传的文件的位置也拥有可以写入的权限, WordPress 默认就是 wp-content 这个目录 ... 你要保证 PHP-FPM 服务对个目录还有这个目录包含的所有的东西都有可以写入的权限。
Drupal 默认的保存文件的位置是 sites/default/files ... 除了这个目录,如果你还希望可以通过浏览器直接下载安装更新 Drupal 模块,你要保证对 sites/all 这个目录也拥有可以写入的权限。不过我推荐大家可以使用 Drush 去管理 Drupal 的模块。
另外,如果你设置了 Drupal 的私有文件系统,你需要保证 PHP-FPM 服务对这个私有文件系统的目录也拥有可以写入的权限。
如果你用的是 Laravel 框架,你需要保证 storage 这个目录对于 PHP-FPM 服务来说拥有可以写入的权限。