PHP fastcgi模式大文件上传500错误

 更新时间:2016年11月25日 17:38  点击:1991
在linux中增加了fastcgi+php环境,结果在文件上传时如果文件小于100KB是可以上传,但大了点就提示mod_fcgid: HTTP request length 132296 (so far) exceeds MaxRequestLen (131072)错误了,意思是fastcgi限制了文件上传大小而你要上传的文件比maxrequestlen还要大啊,所以不能上传想上传就得修改一下配置了,具体步骤如。

最近在项目中中上传图片时,大约有300多K,结果报了个服务器错误,以前从未遇到过,错误的内容如下:

点击查看原图

mod_fcgid: www.111cn.net HTTP request length 132296 (so far) exceeds MaxRequestLen (131072)

查了下资料,发现fastcgi默认的请求大小为131072,于是在apache配置中添加了MaxRequestLen 配置就好了。如果你只需要修改单个虚拟主机的MaxRequestLen,原来是fastcgi模式下的设置问题,需要在配置文件.htaccess或者直接在apache的配置文件http.conf 中指明,如下:

 代码如下 复制代码

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  FcgidConnectTimeout  20
  # to get around upload errors when uploading images increase the MaxRequestLen size to 15MB
  FcgidMaxRequestLen  15728640
</IfModule>


如果你是php+apache windows环境下的话我们如下配置即可

在php.ini中找到

upload_max_filesize,及其他post_max_size、max_input_time、memory_limit、 max_execution_time配置

把上传大小修改之后重启apache 即可解决。

 

magic_quotes_gpc是一个php中一个给单双引号增加一些安全过滤的函数,但此函数对于我使用unserialize函数时会产生一些影响,下面我就就这个问题与大家看几个实例与解决办法。

昨天朋友让我帮他解决下他网站的购物车程序的问题,程序用的是PHPCMS,换空间前是好的(刚换的空间),具体问题是提示成功加入购物车后跳转到购物车页面,购物车里为空。

我看了下代码,大致的原理就是将产品ID与数量存放到数组中,然后序列化后存入COOKIE中,在购物车页面反序列化COOKIE,得到这个数组并读出对应产品信息。

调试一下发现问题出现在unserialize上。

我先根据它的购物车原理写了段代码:

 

 代码如下 复制代码
<?php  
    header("Content-type: text/html; charset=utf-8");  
    $magic = get_magic_quotes_gpc() ? "开启" : "未开启";  
     
    $str = array(array('goods_id'=>13,'number'=>1));  
    setcookie("cart", serialize($str));  
    echo "magic_quotes_gpc: ".$magic."<br>";  
    echo $_COOKIE['cart']."<br>";  
    print_r(unserialize($_COOKIE['cart']));  
?> 


大家执行下这段代码可以发现,当你的magic_quotes_gpc关闭时这段程序执行没有任何问题,但是magic_quotes_gpc开启时你会发现反序列化并不成功。这时你可能就知道问题出在哪了?

原因是magic_quotes_gpc开启时,系统会自动对POST GET COOKIE的结果中的单引号进行转义,加上\,所以$_COOKIE['cart']的值就变成了a:1:{i:0;a:2:{s:8:\"goods_id\";i:13;s:6:\"number\";i:1;}},这样的话unserialize是无法反序列化成功的,就出现了问题。

解决的办法简单来说就是将unserialize($_COOKIE['cart'])改成unserialize(stripslashes($_COOKIE['cart'])),在COOKIE前加上stripslashes,去掉转义符。这样就没问题了。

对于cookie影响我们再做个测试

1.问题:项目数据需要序列化保存在cookie中,然后再获得cookie的数据反序列,获得原数据

 代码如下 复制代码


    $a[0] = array("key"=>"哈  逻"); 
    $a[1] = array("key"=>"哈 逻"); 
    $jsona = json_encode($a); 
    setcookie("testcookie","");  //www.111cn.net
    setcookie("testcookie",$jsona); 
    var_dump($jsona,true); //正常取值 
    var_dump(json_decode($_COOKIE['testcookie'],true)); //取不到值 


在没有经过cookie赋值时,正常反序列化。经过cookie之后,取到值为空

2.分析:

 

 代码如下 复制代码
    $a[0] = array("key"=>"哈  逻"); 
    $a[1] = array("key"=>"哈 逻"); 
    $jsona = json_encode($a); 
    var_dump($jsona); //string(50) "[{"key":"\u54c8 \u903b"},{"key":"\u54c8 \u903b"}]" 
    setcookie("testcookie",""); 
    setcookie("testcookie",$jsona); 
    var_dump($_COOKIE['testcookie']); // string(62) "[{\"key\":\"\\u54c8 \\u903b\"},{\"key\":\"\\u54c8 \\u903b\"}]" 
    var_dump(json_decode($_COOKIE['testcookie'],true)); 


对比了一下数据,经过cookie处理后多了几个//

解决方法:

 代码如下 复制代码


    var_dump(json_decode(stripslashes($_COOKIE['testcookie']),true)); 
    var_dump(json_decode(str_replace("\\","",$_COOKIE['testcookie']),true)); 


总结:magic_quotes_gpc在开启的情况下,会影响通过get|post|cookies获得的数据.所以我们在get|post|cookies处理数据的时候,
首先判断magic_quotes_gpc开启情况
1>在开启情况下,处理数据需要stripslashes
2>在没有开启情况下,接受数据先addslashes,处理数据stripslashes

本文章来给各位朋友分析关于使用strtotime和mktime时参数为0时返回1999-11-30的时间戳问题解决方法,希望本文章对大家会有所帮助。

先看例子

 代码如下 复制代码

<?php
$time = date('Y-m-d',strtotime('00-00-00 00:00:00'));
echo $time;
//输出 1999-11-30
?>

这里没有任何bug,00-00-00的意思是2000-00-00,2000-00-00实际上是1999-12-00,而1999-12-00又会转换成1999-11-30。
所以这里没有任何bug,完全正常。

strtotime('00-00-00 00:00:00')与 mktime(0,0,0,0,0,0) 是完全等价的。

//int mktime(时, 分, 秒, 月, 日, 年)
echo mktime(0,0,0,0,0,0);
mktime() 函数用于从日期取得时间戳,成功返回时间戳,否则返回 FALSE 。

输出 943920000

在mysql数据库连接时碰到Warning: mysql_fetch_array() expects ...错误提示,根据我的经验这个是sql返回的query为空了,我们没有加己判断直接使用了mysql_fetch_array()函数导致的下面我们一起来看问题解决方案。

我的高度代码如下

include("conn.php");

if(!empty($_GET['id'])){
         $sql="select * from news where `id`='".$_GET['id']."'";
         $query=mysql_query($sql);
         $rs = mysql_fetch_array($query);     
}

提示错误了

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in F:xmappwww.111cn.netmylibrarysearch_result.php on line 32

后来我对代码进行升级

if(!empty($_GET['id'])){
         $sql="select * from news where `id`='".$_GET['id']."'";
         $query=mysql_query($sql);
if( mysql_num_rows( $query )
{
         $rs = mysql_fetch_array($query);  
}
else
{
mysql_error();
}  
}

这样就会看到mysql错误信息了,结果是sql语句有问题了,把sql语句进行修改就可以了,

一聚教程小编提示你,导致这类错误是我们语法不规范了,如果要处理只有对sql进行一条条输出处理或在mysql_query(sql) or die(mysql_error()) 这样来处理 本站原创转载必须注明来源http://www.111cn.net/phper/php.html 

使用iis+php环境经常会碰到iis php提示An error occurred on the server when processing the URL错误了,但是在php官网也找不到很好的解决办法。

在几天前帮朋友处理网站搬家后出现的MSSQL数据库链接问题,后来我把它的代码在本地搭建环境测试就发现一个ASP的问题并此解决了,也帮助我朋友解决了问题。所以今天给大家讲下ASP出现的一个错误,虽然ASP的程序已经很少人使用了,但是还是不少的。

  好的,进入我们的主题,首先我们先了解下演示的环境。首先我使用的是Windows 7 旗舰版 32bit 和IIS7.5 的版本。程序是使用了一个简单的CMS系统,语言:ASP。

An error occurred on the server when processing the URL. Please contact the system administrator.

出现的错误是:
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.

  其实解决这个问题很简单,今天就把它当一节课与大家讲讲。

第一步:启动IIS,打开该站点。在【功能视图】的列表中找到【ASP】

第一步:启动IIS,打开该站点。在【功能视图】的列表中找到【ASP】

第二步:找到【将错误发送到浏览器】的值修改为【True】并应用。

第二步:找到【将错误发送到浏览器】的值修改为【True】并应用。

如果你修改之后,直接预览再看效果。估计是不行的,因为还没有设置好。

Active Server Pages 错误 'ASP 0131'

出现的错误如下
Active Server Pages 错误 'ASP 0131'
不允许的父路径
/admin/login.asp,行 1
包含文件“../Inc/Const.Asp”不能用“..”表示父目录。

 

第三步:这时候我还要设置下【启用父路径】,同样设置为【True】并应用

第三步:这时候我还要设置下【启用父路径】,同样设置为【True】并应用

再看下效果如何吧?

完成

  顺便也在这里解释下,而我根据我理解来介绍呢,简单来说呢?将错误发送到浏览器就是把程序错误信息不用友好的方式展现出来,主要是为了方便调试;启用父路径而是代码中出现了“...”等的路径方式,跟Windows权限继承是一样的。下面内容来自微软官方说明:
将错误发送到浏览器 [scriptErrorSentToBrowser]:
指定 Web 服务器除了将调试详细信息(文件名、错误、行号、描述)记录到 IIS 请求日志中以外,是否还将其写入客户端浏览器。默认值为 True。
启用父路径 [enableParentPaths]:
指定 ASP 页是否允许相对于当前目录的路径(使用“...”表示法),即当前目录之上的路径。默认值为 False。

Tisp:
1.如果浏览器打开任何网站出现问题,可以把IE的【显示友好http错误信息】不要打勾启用来查看此网站的错误信息。

显示友好http错误信息

2.虚拟主机空间的用户可以让服务商来解决此问题。

[!--infotagslink--]

相关文章

  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • 几分钟搞懂c#之FileStream对象读写大文件(推荐)

    这篇文章主要介绍了c#之FileStream对象读写大文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 借助FileReader实现将文件编码为Base64后通过AJAX上传

    这篇文章主要介绍了借助FileReader实现将文件编码为Base64后通过AJAX上传的方法,包括后端对文件数据解码并保存的PHP代码,需要的朋友可以参考下...2015-12-25
  • jQuery+ajax简单实现文件上传的方法

    这篇文章主要介绍了jQuery+ajax简单实现文件上传的方法,结合实例形式简单分析了jQuery基于ajax的post方法进行文件传输及asp.net后台处理技巧,需要的朋友可以参考下...2016-06-12
  • 适用于初学者的简易PHP文件上传类

    本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:<&#63;phpclass Test_Upload{ protected $_uploaded = array(); protected $_destination; protected $_max = 1024000; protected $_messages =...2015-10-30
  • js实现上传文件添加和删除文件选择框

    这篇文章主要为大家详细介绍了js实现上传文件添加和删除文件选择框 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-25
  • js 实现文件上传样式详情

    这篇文章主要介绍了js 实现文件上传样式,下面文章举例说明js 是如何实现文件上传样式的,附有代码详细解说,需要的朋友可以参考一下,希望对你有所帮助...2021-10-21
  • PHP利用APC模块实现大文件上传进度条的方法

    php 大文件带进度的上传,一直是一个令php程序员很苦恼的问题。查询baidu 、Google ,大体做带进度的上传方式为:flash+php,socket,apc+php等,下面我介绍了apc +php+ajax制作的带进度的上传,并贴出源码,希望对大家有用。 Altern...2015-10-30
  • C#文件上传的简单实现

    这篇文章主要为大家详细介绍了C#文件上传的简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • php需登录的文件上传管理系统

    本文给大家介绍一个不错的需要登录的php 文件上传管理系统,功能简单有需要了解的同学可参考。 代码如下<&#63;php$admin_pw="admin";//管理密码$uploaddir="upload";//上传目录session_start();if($_GET['action']=="g...2015-10-30
  • asp.net html控件的File控件实现多文件上传实例分享

    asp.net中html控件的File控件实现多文件上传简单实例,开发工具vs2010使用c#语言,感兴趣的朋友可以了解下,必定是多文件上传值得学习,或许本文所提供的知识点对你有所帮助...2021-09-22
  • TypeScript前端上传文件到MinIO示例详解

    这篇文章主要为大家介绍了TypeScript前端上传文件到MinIO示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...2022-10-12
  • JQuery异步提交表单与文件上传功能示例

    这篇文章主要介绍了JQuery异步提交表单与文件上传功能,结合实例形式分析了jQuery表单提交及文件传输操作的相关实现技巧,需要的朋友可以参考下...2017-01-16
  • PHP文件上传主要代码讲解

    复制代码 代码如下:<?php if($_FILES['myfile']['name'] != '') { if($_FILES['myfile']['error'] > 0) { echo "错误状态:" . $_FILES['myfile']['error']; } else { move_uploaded_f...2013-10-04
  • 使用jQuery.form.js/springmvc框架实现文件上传功能

    这篇文章主要介绍了使用jQuery.form.jsspringmvc框架实现文件上传功能,非常具有参考借鉴价值,感兴趣的朋友一起学习吧...2016-05-14
  • C#使用FileStream循环读取大文件数据的方法示例

    这篇文章主要介绍了C#使用FileStream循环读取大文件数据的方法,结合实例形式分析了FileStream文件流的形式循环读取大文件的相关操作技巧,需要的朋友可以参考下...2020-06-25
  • jquery插件uploadify实现带进度条的文件批量上传

    这篇文章主要介绍了jquery插件uploadify实现带进度条的文件批量上传,感兴趣的小伙伴们可以参考一下...2015-12-14