yii2 验证规则.0 文件上传规则定以后,文件反而上传不了,是怎么回事

期望在上传文件的时候自动按时间创建文件夹,以保存上传文件 - 问答 - Yii Framework 中文社区
期望在上传文件的时候自动按时间创建文件夹,以保存上传文件
悬赏 100 金钱
model代码如下:
public function upload(){
if($this-&validate()){
if(!file_exists('upuploads/'.date('Y/m/d',time()))){
mkdir('upuploads/'.date('Y/m/d',time()));
$this-&imageFile-&saveAs('uploads/'.date('Y/m/d',time()).'/'.rand(000,999).'.'.$this-&imageFile-&extension);
报错:mkdir(): No such file or directory
尝试解决:修改uploads的权限为777,但未来创建的文件夹都没有777权限
linux服务器 mkdir() 后加 chmod()
共 2 条回复谢谢。将代码贴于此,大家可能有更好的办法,或简化代码
$dirArray = explode('/','uploads/'.date('Y/m/d',time()));
for($i=0;$i&count($dirArray);$i++){
if(!file_exists($dirArray[$i])){
mkdir($dirArray[$i]);
chmod($dirArray[$i],0777);
if($i==count($dirArray)-1){
$dirArray[$i+1]=$dirArray[$i].'/'.$dirArray[$i+1];
mkdir第三个参数带true,就可以递归创建。不需要用到for循环这么麻烦。
mkdir('upuploads/'.date('Y/m/d',time()),0777,true);
共 3 条回复
报错:mkdir(): Permission denied
应该是服务器没有管理员权限,无法对文件夹权限进行修改吧
通常将跑webserver的用户(比如www-data)加入到你的web目录的组用户,然后给组用户赋予rw权限即可。
谢谢,已实现,按照这个方法更简便了。
您需要登录后才可以回答。 |百度云上传文件数量受限,是最近变得规则吗?_百度知道& 环境和配置文件
环境和配置文件 为什么要引入环境的概念呢? 让我们假设这种非常典型的情形:你们是一个开发团队,成员有Alice, Bob, Charlie等很多人, 你们在自己的计算机上进行开发。其中,Alice使用Linux操作系统,Bob使用Mac OS,而Charlie使用Windows, 每个人使用的IDE也不尽相同。这都没问题,PHP可以在不同平台上跑得很好。 问题其实不在PHP,不在Yii。 问题在于每个成员在开发的同时,都在自己本地进行编程,都在本地搭建了自己的开发和测试环境。 因此,每个人用于所用的数据库名称、用户名、密码都是根据自己的喜好命名的。 这此信息是作为配置项保存在Yii应用的配置文件中的。 这在代码的版本控制上,出现了麻烦。 每次各成员向代码库提交代码时,由于他们都修改了配置文件中的用户名、密码等信息为本地信息。 因此,在提交代码时,产生了冲突。虽然这个冲突不难解决,但是负责维护代码库的Alice觉得这很无聊,也很苦恼。 同时,Bob是个敏感的人,他认为自己本地的数据库连接信息包含了用户名、密码等信息,关系到自己的安全, 不应该提交到团队的代码仓库中去。于是,每次提交前,他都要把这些信息从配置文件中删除,然后再提交。 提交完了再改回来。不然代码连不上数据库呀。因此,Bob也很苦恼。 而Charlie是负责把经过测试的代码部署到产品服务器上。 由于开发端的环境和产品端的完全不同,于是每次部署前,他不得不小心地对照原来产品端的配置文件, 将开发端的配置,改成产品端的。 于是Bob提议,将配置文件排除在代码库之外,不对配置文件进行版本控制。 这样Alice不用去解决无聊的代码冲突了,Bob也不用每次都删除配置再提交了, Charlie也不用每次拉取代码后第一件事就是把数据库连接信息改成服务端的了。 这确实解决了一些问题。但不得不说,你们的代码库是不完整的,里面缺少一个环境配置文件。 更为要命的事,某天你们的团队经过讨论,认为需要在配置文件中加入新的配置项,或者修改一个配置项, 那么你们将不得不通知所有成员,自己手动更新。因为你们未能将该配置文件纳入版本管理,不能实现自动分发。 毫无疑问,这些来回来去运行环境的切换,一定烦透你了。于是贴心的Yii引入了环境的概念来解决这个问题。 其实,Yii1.1中还没有这个特性,Yii2.0的基础模板应用也没这个功能。 这是Yii2.0高级模板引入的技术。 在实际运用中,各开发团队,特别是大型团队,已经摸索出自己的一套环境配置和部署的操作办法了, Yii2.0环境功能,也是需要与团队现有的环境部署规则相契合的,并非另起一炉。
环境的目录结构 首先了解Yii各环境文件。前面我们讲到,每个Yii环境就是一组配置文件, 包含了入口脚本 index.php 和各类配置文件。 其实他们都放在 /path//environments 目录下面,我们看看这个目录都有哪些东西 .
├── dev
├── backend
├── config
├── main-local.php
└── params-local.php
└── web
├── index-test.php
└── index.php
├── common
└── config
├── main-local.php
└── params-local.php
├── console
└── config
├── main-local.php
└── params-local.php
├── frontend
├── config
├── main-local.php
└── params-local.php
└── web
├── index-test.php
└── index.php
└── yii
├── prod
├── backend
├── config
├── main-local.php
└── params-local.php
└── web
└── index.php
├── common
└── config
├── main-local.php
└── params-local.php
├── console
└── config
├── main-local.php
└── params-local.php
├── frontend
├── config
├── main-local.php
└── params-local.php
└── web
└── index.php
└── yii
└── index.php
从上面的目录结构图中,可以看到,环境目录下有3个东东:
目录 dev 目录 prod 文件 index.php
其中, dev 和 prod 结构相同,分别又包含了4个目录和1个文件:
frontend 目录,用于前台的应用,包含了存放配置文件的 config 目录和存放web入口脚本的 web 目录 backend 目录,用于后台应用,内容与 frontend 相同 console 目录,用于命令行应用,仅包含了 config 目录,因为命令行应用不需要web入口脚本, 因此没有 web 目录。 common 目录,用于各web应用和命令行应用通用的环境配置,仅包含了 config 目录, 因为不同应用不可能共用相同的入口脚本。 注意这个 common 的层级低于环境的层级,也就是说,他的通用,仅是某一环境下通用,并非所有环境下通用。 yii 文件,是命令行应用的入口脚本文件。
环境目录下的 index.php 并不是通常所说的web入口脚本,它其实是个定义文件。 定义了可以使用的环境,打开这个文件看一眼:
34return [
'Development' =& [
'path' =& 'dev',
'setWritable' =& [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'setExecutable' =& [
'yii',
'setCookieValidationKey' =& [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'Production' =& [
'path' =& 'prod',
'setWritable' =& [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'setExecutable' =& [
'yii',
'setCookieValidationKey' =& [
'backend/config/main-local.php',
'frontend/config/main-local.php',
不用深入去研究,也可以大致猜到它定义了 Development Production 两个环境, 聪明如你,肯定用脚都能猜得出来。其中:
path 指明了当前环境所对应的配置文件存放目录。如 Productions 环境对应的目录为 prod 。 setWritable 指明了需要 init 脚本设定为可写模式的目录,这些目录Yii应用在运行时会写入。 setExecutable 指明了要将哪个文件设为可执行。这个文件就是命令行应用的入口文件了。 setCookieValidationsKey 指明了向哪个文件写入 cookieValidationKey 配置项。
对于分散于各处的 web 和 config 目录而言,它们也是有共性的。
凡是 web 目录,存放的都是web应用的入口脚本,一个 index.php 和一个测试版本的 index-test.php 凡是 config 目录,存放的,都是本地配置信息 main-local.php 和 params-local.php
环境配置的生效规则 说了这么多,现在串起来看。运行 init 脚本就会将某一环境的系列文件复制到当前的文件中, 这些文件就是 index.php yii 入口文件和 *-local.php 配置文件。 复制到哪呢?复制到了 /path// 目录下面, 并覆盖 frontend backend console common 中对应的 config 目录和入口脚本 ( index.php 或 yii , common 中没有入口脚本) 。 在初始情况下,即未运行过 init 脚本之前,各应用目录(frontend, beckend, console)和通用目录(common), 都是已经有一些配置文件了。就是config目录下的 bootstrap.php main.php params.php 。 总的讲, *.php 与环境、配置相关的文件都有哪些呢?有表示主配置的 main.php main-local.php , 有表示全局参数的 params.php params-local.php ,表示引导阶段的 bootstrap.php , 有表示入口脚本的 yii 和 index.php 。其中, bootstrap.php 在
中有介绍, 且在优先顺序与其他配置文件的原则是一样的,下面就不再重复讲了。 运行了 init 脚本后,环境中的文件也被复制出来。 这些配置文件成套地分布在各应用目录和通用目录的 config 目录下。 而 index.php 入口脚本则分布在各应用目录的 web 目录下, yii 入口脚本则只放在应用根目录下。 入口脚本我们在
已经讲了,这里就不讲。剩下的,来看看配置文件们。 其中,所有的 *-local.php 都来自于你选用的环境,表示本地配置的意思。他们不会被写入到代码仓库中。 当然,这些环境,也就是整个 /path//environments 目录都会被写入代码仓库。 而所有不带 *-local.php 的main和params配置文件,都不是环境的内容。但在最终的运行环境中,他们是起作用的。 上面讲到的配置文件有很多,有前台、后台、命令行和common的,有带local的、不带local的, 有params、main等,看起来好复杂的样子。那么一个环境发生作用时,这些文件是怎么个顺序呢? 这要看看
部分的内容,但总的原则是:
前台、后台和命令行的配置文件间,互不干扰,各管各的。没有先后顺序一说。 因为Yii在任意时间,要么是在跑前台,要么是在跑后台。还记得么?他们是不同的应用,他们是独立的。 但是,这里有个common,通用于前台、后台等。common的内容被前台或后台的覆盖。 local和不带local的。明显的,local的是本地配置文件,不带local的是团队间通用的配置。 因此,local的覆盖不带local的。 params, main。这2类文件表示的配置内容并不重叠,他们逻辑上不存在谁覆盖谁的问题。 如果看看源代码,可以发现,params只是main配置的一部分。 而main的内容,是作为参数传递给应用的构造函数。 因此,这两者不存在谁覆盖谁的问题。
环境的使用 环境在具体使用上,把握这么几个原则:
与前后台无关,且与环境无关的配置项,写到 \common\config\main.php 中去。 不要写到环境中去,也不要写到前台或后台的配置文件中去。 比如,当使用 FileCache 作为缓存时,这是与环境无关、与前后台无关的, 或者说所有环境下,前后台的配置都相同。 有关配置项要写到 \common\config\main.php 中去。 无关环境的配置,不要写到环境中去,写到应用的配置中去。 如,应用的ID,无论是开发环境还是产品环境,ID是不会变的。但前后台ID是不同的。 因此,ID的配置项写到 \frontend\config\main.php 中去。 而不要写到 \environment\frontend\config\main-local.php 中去。 与环境有关,但与前后台无关的配置项,要写到环境的 common 配置中去。 比如,有的应用前后台使用的数据库是一致的,因此,其 db 配置项应该是一样的。 但在开发时,所使用的数据库服务与产品时的数据库服务肯定是不一样的。 这种情况下,要所配置项写到 \environments\dev\common\main-local.php 环境配置文件只提供框架。凡是环境配置文件,对于敏感信息,如,数据库地址、用户名、密码、API Key等信息, 一律留空,供团队成员在调用 init 后自行填写。 本地配置绝不提交代码库。因此,所有的应用目录(frontend, backend等,并非environment目录)下的, 所有 *-local.php 都不提交代码库。这点Yii已经通过 .gitignore 为我们做好了。 关于 .gitignore 的有关信息,可以看看
的有关内容。
这样做能达到什么效果呢?
整个代码仓库中,不会有任何的敏感信息。这个代码仓库即使被外部获取,其危害程度也仅限于代码。 数据库、Web Service 等密码还不至于泄露。 增加、删除、更新配置项的所有修改,都可以通过版本控制系统向整个团队分发。 所有团队成员只需要记住权限范围内的敏感信息,就可以完成工作。 本地开发的队友,只要有本地的数据库连接信息就可以开发。 负责测试的队友,只需要知道测试数据库服务器连接信息就可进行测试。 负责部署的队友,只需要知道产品数据库的连接信息就可以完成部署。 所有团队成员只需要记住各自权限范围内有限的几个敏感信息就可以了。
不足之处就是每次 pull 代码时,如果配置文件有更新,需要团队成员调用 init 将新的配置文件覆盖本地配置。 然后需要手动填入敏感信息。但这种情况在初期配置不太稳定的情况下,根据团队迭代频率,一般一天一次。 而等开发进入正常阶段后,配置文件相对稳定,极少有需要修改的。
注意 cookieValidationKey 另外还有一个需要读者朋友们留意的地方,就是每次调用 init 脚本切换、更新环境配置时, cookieValidationKey 都会被重新生成的随机串所覆盖。这往往会导致更新前后 cookieValidationKey 不一致。 从安全角度来讲,定时不定时地更新 cookieValidationKey 也是无可厚非的。 但同时我们也要看到由此产生的一个副作用,那就是原先保存在用户机器上的cookie在下次访问时,会全部失效。 一个简单表现就是已经设置了自动登录的用户,在更新 cookieValidationKey 后,全部需要重新登录。 这在大部分情况下,我们认为这是可以接受的。相信大家在使用互联网的过程中,也有遇到过重新登录的情况。 因此,通常我们也可以很放心的使用 init 脚本,而不必特别地去关注自动生成的 cookieValidationKey 。 这种情况下, cookieValidationKey 是一个纯粹的、与本地环境密切相关的配置项,我们不用太操心它。 但是,有的情况下, cookieValidationKey 则不宜由 init 脚本来自动生成,而需要运维人员人工进行干预。 需要人工干预的情况,一般出现在对cookie要求比较严格的场景。 如,当你的应用采用分布式架构提供服务,同时运行在多个节点的时候。 有的负载均衡策略会将同一用户的先后2次请求随机分配给不同的节点进行处理。 而如果这两个节点的 cookieValidationKey 不一致,那么就会出现用户就会收到很奇怪的错误信息。 因此,在分布式情况下,最简便的处理方式还是通过人工干预,确保各节点的 cookieValidationKey 始终一致。 这种情况下, cookieValidationKey 已经不是一个纯粹的本地环境配置项了,最多算是一个环境级别的配置项, 而与本地、本机没有多大关系了。这种情况下, 应当将 cookieValidationKey 与其他诸如数据库密码等敏感信息等同视之,由具有权限的、负责运维的人员掌握。 并在每次调用 init 脚本后,将所掌握的 cookieValidationKey 填写到相应的配置项中去。 这里舍弃掉了init脚本自动生成的 cookieValidationKey 。 更新前后, cookieValidationKey 未发生改变,因此,对于应用的用户而言没什么影响。 幸运的是,绝大多数情况下,我们还无需对于 cookieValidationKey 操太多的心,可以完全由init脚本自动生成。 其实,对于Yii开发团队而言,刚开始的时候,是将 cookieValidationKey 放在非环境配置文件 main.php 中的。 后来,觉得这个配置项与虽然不一定是本地相关的,但起码与环境有关, 因此后来还是放在环境配置文件main-local.php中。 只是,由于安全上的考虑,对于未设置 cookieValidationKey 的情况会抛出异常。 同时,又为了方便开发者,又采用了让 init 脚本生成随机串的方式来自动配置。ueditor的问题--后端配置项没有正常加载,上传插件不能正常使用
[问题点数:30分,结帖人lamp_yang_3533]
ueditor的问题--后端配置项没有正常加载,上传插件不能正常使用
[问题点数:30分,结帖人lamp_yang_3533]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年10月 PHP大版内专家分月排行榜第三2014年8月 PHP大版内专家分月排行榜第三2014年3月 PHP大版内专家分月排行榜第三2014年1月 PHP大版内专家分月排行榜第三2012年8月 PHP大版内专家分月排行榜第三2012年2月 PHP大版内专家分月排行榜第三2012年1月 PHP大版内专家分月排行榜第三2011年12月 PHP大版内专家分月排行榜第三2011年11月 PHP大版内专家分月排行榜第三2011年6月 PHP大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Yii 2.0 出来好长时间了,一直都是看下官方网站,没实践过,今天弄了下图片上传操作。1创建一个简单的数据表mysql>+---------+--------------+------+-----+---------+----------------+| Field ....
相关内容:
今年9月份,数据秀()团队参与阿里和国家公共气象服务中心主办,浙江大学和阿里云承办的“公益云图数据可视化创新大赛”。 “公益云图数据可视化创新大赛”将融合开放气象、空气质量监测、企业排放和公共环境等领域的数据的,基于阿里云天池大数据平台开发一批关注环境公益的可视化技术,借助阿里
1 云计算 1.1 云计算是什么 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。 云计算是通过使计算分布在大量的分布
硬件版本是raspberrypi b+ v1.2 1.下载raspberrypi 的img 和Win32DiskImager 2. 1)一张2G以上的SD卡及读卡器,最好是高速卡,推荐Class4以上的卡,卡的速度直接影响树莓派的运行速度 笔者建议最好4G以上,否则后续开发会使用经常不够用 2)wi
AOP代理生成 AOP就是面向切面编程,主要作用就是抽取公共代码,无侵入的增强现有类的功能。从一个简单的spring AOP配置开始: 上面的配置涉及到AOP几个重要的概念: pointcut:切点,定义具体什么地方需要增强 advice:通知,定义在切点处进行哪些增强,也就是在切点处干的事 adv
可扩展的XML Schema机制 从Spring2.0开始,Spring提供了XML Schema可扩展机制,用户可以自定义XML Schema文件,并自定义XML Bean解析器,并集成到Spring Ioc 容器中 完成XML自定义扩展,需要下面几个步骤: 创建一个 XML Schema 文件
如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染。所以本篇介绍对 UnmanagedArray
随着使用的人群增多,是时候补充一下文档说明,因此,又花了一个晚上的时间,整理了文档,详情如下:
前言看了网上一些关于网页进度条样式的资料,有很多方式实现,针对其展现形式,有用图片的,有用css2属性clip,有用flash的,本人就学会了一种,下面就简单来介绍一下。
本文发表于本人博客。先来看看hadoop的大体架构是如何,主要分为HDFS以及MapRedure。
需要实现的功能:数据太多想初次加载部分数据,在底部加上“加载更多”按钮点击后加载第二页数据(从数据库只取指定页数据)后接在已有数据后面(类似于android中的下拉加载更多)每次加载时显示“正在加载……”网上找了一些方法,类似于MvcPager分页组件,用的是v1.
说起优衣库UNIQLO,大概没有人不知道这个品牌主要是销售服饰的吧!最近我却在优衣库UNIQLO美国的官网上,看到她们开始“不务正业”,在网站上教起妳『如何做菜』?莫非她想要多角化经营,开设餐厅?
Social customer service company Lithium Technologies will announce on Thursday morning that it has acquired Klout for almost $200 million in cash and private stock, says Fortune. Read More
北京时间4月16日消息,据《华尔街日报》报道,援引知情人士消息称,此前已递交破产保护的比特币交易网站Mt. Gox将放弃重建计划,请求法院允许其进行破产清算。消息人士称,之所以Mt.
Welcome to Michael Sam mania.After Sam was drafted by the St. Louis Rams on the third day of the NFL Draft, making him the first openly gay football player to enter the draft, people began scrambling to order his Rams jersey. In fact,
An anonymous reader writes "We had hints at this when Zenimax accused John Carmack of stealing 'proprietary technology and know-how,' but now it's official: Zenimax is suing Oculus VR over its virtual reality headset technology. 'According to a statement released by Zenimax,
Real estate has traditionally been a game won or lost based on old-fashioned networking and shoe-leather style hard work — deeply dependent on timing, detecting trends and more than a little bit of luckIt may not be that way for much longer, however.
前些日子看到了一则新闻,flappybird原作者将携新游戏SwingCopters来袭,准备再靠这款姊妹篇游戏引爆大众眼球。就是下面这个小游戏: 前者的传奇故事大家都有耳闻,至于这第二个游戏能否更加火爆那是后话了。
HM Revenue and Customs (HMRC) has urged the public sector to work together to solve the ever-growing problem of fraudulent email.Read more: //hmrc-work-together-to-combat-fraudulent-email/
Living in a mostly wireless world is a fantastic experience: were it not for constant connectivity issues, competing wireless protocols, limited ranges, and terrible battery life.
科幻作品中我们经常能够看到与人类一样聪明的机器人,但机器是如何在这背后存储知识的?是如何推理知识并运用知识的?最后又是如何实现与人的交互的?

我要回帖

更多关于 改光纤以后网速反而慢 的文章

 

随机推荐