php $_POST 为空的奇怪问题

Life is short , play more!
本文来自lihao's Blog,转载请注明。

php处理multipart/form-data 时,$_POST值为空的奇怪问题。

今日在公司写一个上传文件的页面,发现了此问题。 非常奇怪, 暂且原因。 回家一试没有任何问题, 可能和php的版本有关。

家里的php版本

php -v
PHP 5.5.31 (cli) (built: Jan 9 2016 00:05:25)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

测试代码非常简单如下



利用jmeter 发送post请求, multipart/form-data
即有text/html 的,也有各种类型的文件数据。

再经过将公司某测试服务器的php version由原来默认的 5.3.3 版本升为 5.5.33 后,问题已经不存在。看来确实是php版本的问题或者配置问题。

因为原来是由yum 安装的php,后面改为用source tar ball 安装,记录下安装的过程。


1. sudo yum remove 所有的php rpm包。
(rpm -qa |grep -i php ) 查找到所有已经安装的php

2. 下载php 5.5 版本, 目前已经有5.6 和 7.0 的版本。 因为考虑到版本变化太大,可能程序会需要调整,所以并未升级到最新的大版本。

3. sudo ./configure --with-mysql --with-mysqli --enable-mbstring --enable-zip --with-apxs2

因为是和apache 2.x 模块配合使用,所以加上 --with-apxs2, 其他的参数根据自己情况增删。 但是一般需要mysql 和 mysqlid 支持的, 务必还是要加上 --with-mysql --with-mysqli

4. sudo make && sudo make test && sudo make install

5. 安装后需要将原来 的配置文件增加。

#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

LoadModule php5_module modules/libphp5.so


LoadModule php5_module modules/libphp5-zts.so

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps

6. 重启httpd。


3条评论

  1. hissummer说道:

    还有一个可能,就是上传的大小太小,导致没有post请求成功。

    检查php的post_max_size设置值

  2. 周睿说道:

    Transfer-Encoding: chunked 这个的问题 php 5.3 是不支持这个的。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注