在mac上使用vmbox映射本地目录开发laravel时,解决storage目录Permission denied的问题

我目前使用vmbox中的ubuntu虚拟机共享代码目录来开发laravel,在这期间遇到一个古怪的问题,就是发现storage目录下面的一些文件虚拟机里的php-fpm貌似没有权限(Permission denied),包括但不限于storage/app,storage/logs等。

而当我在mac中把这些目录的权限改为777后发现并不能解决问题。其中在storage/framework/cache中,php-fpm的确拥有了在这个目录创建二级目录的权限,但是貌似在他自己创建的目录中,php-fpm又并没有w权限了。

后来登录到ubuntu中测试发现,php-fpm在cache文件夹创建了缓存索引文件夹,所有者居然是root的,而且的确没有其他人的w权限。后来又经过其他测试我发现,在vmbox的共享目录中,无论你在虚拟机里使用哪个用户创建什么文件,它的所有者都是root:root,权限也都如下图所示。

后来这个问题用了很多方法,包括mac这边设置用户组,ubuntu设置用户组,但都没有很好的解决。后来想了一个终极办法,就是让php-fpm以root的权限运行。解决方案参考:https://onlyke.com/html/883.html

让php-fpm以root的权限运行

注意,本方法仅用于开发环境来解决一些奇怪问题或者方便使用,请勿在生产环境让php-fpm以root身份运行,否则一切后果自负。

  1. 编辑/etc/php/7.0/fpm/pool.d/www.conf,把user和group修改为root
  2. 编辑/lib/systemd/system/php7.0-fpm.service,在ExecStart的 --nodaemonize前面加上 --allow-to-run-as-root,就像下面这样
  3. 执行命令
  4. 重启php-fpm即可
  5. 最后,可以通过ps命令来查看效果

    可以看到,php-fpm已经以root身份运行了。

Chrome 49低版本或者其他浏览器访问HTTP2网站出现ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

问题跟我想的一样,是因为加密的方式被拒绝导致的

解决方式,在nginx.conf中设置

这个是CloudFlare 使用的配置

参考下面的文章

https://imququ.com/post/why-tls-handshake-failed-with-http2-enabled.html