最近一直在用tp5写项目,在此遇到的问题也比较多。今天来谈谈“mkdir() Permission denied”错误。

你如果不仅仅写代码,还得部署到线上,那么这个tp5的这个错误,你有很大概率会遇见它。

因为这跟文件的权限有关系,特别是自动生成的文件或者目录类的权限,linux服务器出于安全因素对于用户的权限有着严格的控制。

对于tp框架而言,自动生成的文件或者目录应该是runtime目录,所以在线部署代码的时候,开放此类目录的权限。

所以解决mkdir() premission denied 的问题最直接的方式,把runtime权限放开,让所有用户都可以创建它。

chmod -R 777 runtime

在liunx中进入项目目录执行以上命令,就能解决这个问题,简单,高效。

如果你对文件的安全要求比较苛刻,那么以上的答案并不能令你满意,简单,高效的方法背后一般需要牺牲一些安全因素为代价。

但以下提供的方法或许是一个不错的选择。

更改runtime目录的所有者,也就是runtime这个目录权限只针对所有者开放。

以我的项目为例,服务器是nginx,nginx中设置的访问用户为www用户,那么我只需要把runtime目录有root用户改为www用户就能解决此问题。

ps aux|grep nginx //查看当前的nginx进程,能够找到nginx用户是哪个(可能是www,user或者其他的)

chown -R www runtime //chown -R <nginx 用户> runtime,改变runtime所有者为nginx用户

ok,进入项目目录去执行上面的命令吧,是否有效一试便知。

上面的方法的解释是因为对于web的每一个请求都是由服务器(nginx,apache等)代劳的,真正操作这些项目文件或目录的是这些服务器用户,比如nginx中的www用户,apache中的apache用户。所以指定文件或者目录的所有者就是这个问题的关键,至于第一个方法设置最高权限为何也可以呢,这个就相当于任何用户都能访问这个runtime目录,当然也包括www或者apache用户。退一步,上面的第二个方法是以nginx为例,如果你的服务器是apache呢,那你现在应该知道怎么改了吧。

thinkphp5的mkdir() Permission denied问题的更多相关文章

  1. thinkphp5出现mkdir() Permission denied报错解决办法

    如果没有runtime目录,则需要手动创建一个,并且给runtime添加权限: mkdir runtime chmod -R 777 runtime 报错如下:

  2. Ubuntu composer 安装thinkphp5 失败,报错:[ErrorException] mkdir(): Permission denied

    在Linux环境下,使用composer安装thinkphp5,安装时,报错:[ErrorException]               mkdir(): Permission denied : 看 ...

  3. tp5 mkdir(): Permission denied 问题

    今天使用tp5 线上上传图片的时候遇到了一个问题 mkdir(): Permission denied 如图 百度了一下 发现大家都说 chmod -R 777 runtime 能解决问题 尝试了一下 ...

  4. thinphp5框架遇到 mkdir() Permission denied 解决办法

    网站重装 直接复制本地程序文件 里面数据库链接信息要改成线上的 然后mysql apache 等都没有动 运行后出现错误 mkdir() Permission denied 这是由于runtime目录 ...

  5. CDH:cdh5环境mkdir: Permission denied: user=root, access=WRITE, inode="/user":hdfs:hadoop:drwxr-xr-x

    产生问题原因: 环境hadoop2,cdh5创建 使用hadoop fs -mdkir /use/xxx创建文件路径时,出现权限问题 前提我们已经把当前用户zhangsan和root放到/etc/su ...

  6. PHP 运行 mkdir() Permission Denied 的原因

    使用lamp,在上传文件时,PHP执行 mkdir($path) ,  出现没有权限的错误. 解决: 本次使用的时yii框架,所以首先确保 是apache的用户对web目录有权限,然后再给此用户加 r ...

  7. mkdir(): Permission denied

    记录下,凡是遇到此类问题都是无权限导致. 根据不同场景,需要在不同的文件夹设置不同的权限. 例如,图片相关, 在php中,首先看下 配置php.ini的文件上传是否开启(file_uploads = ...

  8. hadoop 权限错误 Permission denied: user=root, access=WRITE, inode="/":hdfs:super

    关于不能执行Hadoop命令 并报权限问题执行错误1.Permission denied: user=root, access=WRITE, inode="/":hdfs:supe ...

  9. 不同用户操作hadoop,Permission denied: user=root, access=WRITE, inode="/user"

    关于不能执行Hadoop命令 并报权限问题执行错误1.Permission denied: user=root, access=WRITE, inode="/":hdfs:supe ...

随机推荐

  1. 学习GIT 版本控制的好去处 另GDB资料

    廖雪峰的官方网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 作者不仅仅是做技 ...

  2. PLSQL导入导出表的正确步骤

    PLSQL导入导出表的正确步骤 原来总是直接 tools->import talbes->Oracle Import结果发现有的时候会出错:有的表不能正确导入, 导出步骤: 1 tools ...

  3. part1:6-Linux文本编辑器vi

    vi编辑器简介: vi是Linux系统的第一个全屏幕交互式编辑器:vim则是vi的升级版得到广大用户青睐. vim有三种工作模式:命令行模式.插入模式.底行模式 命令行模式常用功能键: yy:复制当前 ...

  4. c++编程思想里面的错误(可能c++标准变了,所以以前的东西没有更新)

    第一卷  第五章 5.3友元 下面的代码是<c++编程思想>里面的代码, struct X; struct Y{ void f(X*); }; struct X{ private: int ...

  5. this.closest()在IE中报错的原因及解决办法

    closest()定义在jquery中,不能在原生的js中使用 解决方法:将this.closest()换成$(this).closest()即可

  6. centos6.8下redis的安装和配置

    centos6.8下redis的安装和配置 下载.安装 在redis官网可以获取到最新版本的redis 进入/usr/local/目录,执行如下命令 wget http://download.redi ...

  7. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  8. 2018.08.27 lucky(模拟)

    描述 Ly 喜欢幸运数字,众所周知,幸运数字就是数字位上只有 4 和 7 的数字. 但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列. 哈哈,是 不是感觉被耍了,没错,你就是被耍了. ...

  9. 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录(转)

    出处:http://www.cnblogs.com/mienreal/p/4528470.html ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视 ...

  10. Linux服务器部署系列之三—DNS篇

    网上介绍DNS的知识很多,在这里我就不再讲述DNS原理及做名词解释了.本篇我们将以一个实例为例来讲述DNS的配置,实验环境如下: 域名:guoxuemin.cn, 子域:shenzhen.guoxue ...