php $_POST 为空的奇怪问题
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。
此篇文章已被阅读4496 次
Transfer-Encoding: chunked 这个的问题 php 5.3 是不支持这个的。。
多谢指教!
还有一个可能,就是上传的大小太小,导致没有post请求成功。
检查php的post_max_size设置值