首页 > 编程技术 > php

php提示 Warning: touch() [function.touch]: Utime failed: Permission denied in错误

发布时间:2016-11-25 17:37

在使用php程序时提示Warning: touch() [function.touch]: Utime failed: Permission denied in错误,下面一起来看看此问题的解决办法。

使用timthumb.php出现Warning: touch() [function.touch]: Utime failed: Permission denied in错误

我们先来看一下touch()函数例子

touch() 函数设置指定文件的访问和修改时间。

touch(filename,time,atime)

例子

 代码如下 复制代码

<?php
touch("test.jpg");
?>

应用例子时出现错误

用timthumb.php来做缩略图,本地测试很OK,但是放到vps上面就出现下面的错误错误提示:

Warning: touch() [function.touch]: Utime failed: Permission denied in /home/wordpress/wp-content/themes/zkeyword/library/timthumb.php on line 199
A TimThumb error has occured

The following error(s) occured:
Could note create the index.html file - to fix this create an empty file named index.html file in the cache directory.

从字面上理解,是创建缓存的cache文件没有权限,我就直接将cache的权限设为0777,但是还是不行,还是提示权限不足,进入cache目录后还有一个index.html文件,将其设为0777,问题就解决了。

在安装好ecshop软件之后我们打开首页时提示Only variables should be passed by reference in错误了,碰到这个问题是什么原因呢?下面我们就一起来看看解决办法吧。

Ecshop是个坑爹货,为什么tiandi会说它是个坑爹货呢,请看一下下面的官方的运行环境推荐:

服务器端运行环境推荐
·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本)
·Mysql版本5.0及以上
·空间安装zend
·空间支持文件锁功能
·开启GD功能
·Mysql函数支持mbstring、iconv、fsockopen
看见了吧,PHP5.3以下的版本,还推荐使用5.2的,尼妹的,现在哪个虚拟机还敢用5.3以下的版本?还在用5.3以下的版本?看看tiandi用的2两个主机,衡天的和wopus的都是5.3.28,至于为什么不用5.3以下的版本,自己google”php内存泄露”。

Ecshop上个月刚更新了最新版本,写代码的思路依旧坚挺,仍旧使用5.2版本,好吧,为了做一些测试,需要在本机上进行调试,但本机上装了wp3.9,忘了从哪个版本开始wp只支持5.3以上的php,所以本机的PHP环境是5.4.13。起先,做了两个批处理来切换php5.2.1和php5.4.13,然后发觉一直用批处理切换也累啊,索性直接5.4.13上跑ecshop看看哪里有问题就改哪里吧,结果泥煤的首页直接来个错误。

Strict Standards: Only variables should be passed by reference in D:\tiandiyoyo\hengtian\ecshop\upload\includes\cls_template.php on line 424

不淡定了,打开cls_template.php,定位到424行,发现下面内容:

 代码如下 复制代码

$tag_sel = array_shift(explode(' ', $tag));

将其注释掉,分别拆开,添加两行

 代码如下 复制代码

$tag_tmp = (explode(' ', $tag));
$tag_sel = array_shift($tag_tmp);
//$tag_sel = array_shift(explode(' ', $tag));

原因在于PHP5.3版本开始,array_shift不支持函数返回,记得之前博客里好像还有个帖子专门说了php5.3版本的改变,刚搜索没找到,?濉D壳捌渌?趁婀δ芑姑淮蚩???荒芘龅轿侍庠傩薷拇?肓恕?/p> 下面来看一个总结比较好的php 完美解决无法上传大文件文章,希望此文章能帮助各位解决办法,空虚可以在apache中修改或nginx中修改方法,希望例子对各位会带来帮助。

1、打开php.ini(打开方式就不用说了,百度一大堆)

2、查找post_max_size

表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的
默认为8M,设置为自己需要的值,此参数建议要设置比upload_max_filesize大一些

3、查找File Uploads

是否允许通过http上传文件的开关,确认file_uploads = on

4、查找upload_tmp_dir

文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
如果系统报错提示有“XXX临时目录XXX”的话,这个目录就需要你来设置一个有效目录,没报错就不用管

5、查找upload_max_filesize

允许上传文件大小的最大值,默认为2M,设置为自己需要的值此参数建议不要超过post_max_size值,因为它受控于post_max_size值(就算upload_max_filesize设置了1G,而post_max_size只设置了2M时,大于2M的文件照样传不上去,因为它受控于post_max_size值)

6、如果要上传大于8M的文件,还需要对下面的参数也进行设置:

查找max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8M ;每个PHP页面所需要的最大内存,默认8M

如果你是Nginx的话还需要修改nginx.conf中的http段:

client_max_body_size 1024m; #我这里是1024MB

今天在使用file_get_contents函数获取远程机器的一个功能时,提示HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported error错误了,后来发现只要urlencode就可以解决了。

在做一个接口的时候,使用file_get_contents出现 HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported error。查了一下手册,
Note: 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。

切记,对中文一定要进行先编码后使用

例子

 代码如下 复制代码

$body = file_get_contents('http://www.111cn.net');

这样是没有问题了,如果我们路径中带有中文或空格就不行了

 代码如下 复制代码

$body = file_get_contents('http://www.111cn.net/ 中国地址.html');

这样就会提示HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported error

解决办法

 代码如下 复制代码

$body = file_get_contents(urlencode('http://www.111cn.net/ 中国地址.html'));

这样就显示正常了哦。

刚刚介绍过在iis上传文件不能大于200KB的解决办法,下面有朋友就问我为什么php中最大上传文件不能超过2MB呢,这个问题要怎么设置呢?下面一聚教程小编来给各位介绍一下吧。

打开位于: C:/WINDOWS 的 php.ini 文件( 这个php.ini不一定是在C盘哦,要看你配置环境时这个文件是放在那个盘哦,像我就不喜欢放在C盘了)

然后在php.ini中我们找到如下几个参数进行修改:

 代码如下 复制代码

upload_max_filesize = 2M     (php程序最大可以上传的附件值)

post_max_size = 8M           (form表单POST类型上传的最大可以上传值)

memory_limit = 8M           (限制php程序运行时占用的内存大小最大为 8M)

max_execution_time = 30     (PHP程序执行时间,单位:秒)

另外要确认上传的 <form> 里没有类似下面的这行<input type="hidden" name="MAX_FILE_SIZE" value="1000000">这样也是限制上传大小用的

补充:对于大文件我们在上传时间上也需要设置否则可能碰到上传超时了

解决上传超时

默认是30秒 改为:

 代码如下 复制代码

max_execution_time = 0

0代表不限制

max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒

memory_limit  = 128M ;每个PHP页面所吃掉的最大内存,默认8M

注意:

upload_tmp_dir = "D:/APM/PHP/uploadtemp/"

传文件时系统使用的缓存目录。如果此目录所在磁盘空间不足的话您将不能上传文件

最后重启apache环境或iis环境即可

标签:[!--infotagslink--]

您可能感兴趣的文章: