前提:已经安装好了nginx+nginx-upload-module,详情可以查看靖哥哥的上一篇博文,点击传送门

第一步:安装PHP

先安装libxml2:sudo apt-get install libxml2 libxml2-dev

PHP下载主页:PHP: Downloads

解压:tar -zxvf php-7.3.3.tar.gz

进入PHP解压后的目录:cd php-7.3.3

配置:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts

提一下MySQL数据库的两个配置项:

--with-mysqli 是MySQL增强扩展。

--with-pdo-mysql PHP数据对象PHP Data Objects(PDO),是对数据库的一个抽象。

有了这俩兄弟,后续就可以通过php操作mysql。关于mysql的安装配置,请点击传送门

注意:编译比较耗内存,低配机一定要加上 --disable-fileinfo 参数(靖哥哥买不起高配CVM呀),否则会报错virtual memory exhausted: Cannot allocate memory,最后,系统提示缺什么库就安装对应库咯。

编译安装:make

make完成后,会提示:Don't forget to run 'make test'.

按照提示:make test吧,靖哥哥的机器上会有14137个测试项,等待全部完成,就可以make install了。

Nginx与PHP前后端协作最重要的桥梁是FastCGI接口,PHP5.4以后的版本已经集成了php-fpm(FastCGI Process Manager)。

usr/local/php/ect目录,复制php-fpm的默认配置:

cp php-fpm.conf.default php-fpm.conf

再切换到下一级的/usr/local/php/etc/php-fpm.d目录

cp www.conf.default www.conf

检查其中的user和group :sudo vi etc/php-fpm.d/www.conf

确保:user = www          group = www

如果www用户不存在,那么先添加www用户:

groupadd www
useradd -g www www

最后启动php-fpm服务 :

sudo ./sbin/php-fpm

查看php进程:

php-fpm服务默认监听9000端口,使用

netstat -tln | grep 9000

查看端口使用情况

对于没有php.ini的问题(我这里没有用到),编译配置中,php.ini的路径设定:/usr/local/php/etc

但是,默认不会生成php.ini,需要手动从php源代码中copy一份,源码中有php.ini-development和php.ini-production两个文件,随便copy一份。

cp php.ini-development /usr/local/php/etc/php.ini

第二步:配置nginx,新增对php的支持

# nginx的配置文件中新增对php的支持
location ~* \.php$ {
fastcgi_index   index.php;
fastcgi_pass    127.0.0.1:9000;        # php默认监听9000端口
include         fastcgi_params;
fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

此时可以通过niginx,访问.php的内容。

第三步:Nginx和php配置文件上传(nginx使用nginx-upload-module模块)

nginx-upload-module模块上传的文件内容会以散列序的方式,默认存放在指定的目录下,如图:

此时需要后端处理脚本,将上传的内容还原为原文件,后端处理方法有很多,如Django、Tornado、php。

这里讲一下php的配置。其实很简单,以example.php为例,只需要在文件上传模块的后端处理的location中配置重定向:

rewrite ^(.*)$ /example.php;

文件上传完成后,就会将参数传递到example.php中,此时就可以在php脚本中执行文件操作了。

我这里是将文件移动到upload目录下并重命名为原文件名。

$new_name = $tmp_name."/../../../upload/".$name;
rename($tmp_name,$new_name); 

一定要确保tmp_upload根目录和子目录有权限,upload目录也要有权限。

如果文件名为中文,需要在nginx配置中加入如下配置来支持中文:

charset utf-8,gbk;

最后,在nginx的文件跳转location中,配置如下项即可在页面查询上传的结果。

autoindex on;    # 开启文件索引
autoindex_localtime on;  # 显示的文件时间

最终页面显示结果如下:

注意咯:这只是一个演示demo,实际业务中目录遍历有安全风险,文件上传也有安全风险,一定不要把自己的业务就这样赤裸裸的暴露在公网。

关于域名配置

如果嫌每次输入ip比较麻烦,可以为nginx配置域名。一般到域名服务商那里申请域名时,就可以绑定vpc的公网IP,以后也可以修改。申请成功后,检查nslookup 你的域名,能够正确解析得到你的vpc地址后,就可以在nginx的server_name中配置使用了,而且可以配置多个域名。

Nginx配置PHP处理nginx-upload-module的文件上传相关推荐

  1. layui如何集成文件服务器,layui使用upload组件实现文件上传功能

    layui使用upload组件实现文件上传功能 发布时间:2020-05-22 17:25:25 来源:亿速云 阅读:309 作者:鸽子 背景:页面上一个按钮,点击弹出上传框,从按钮的方法代码开始写: ...

  2. vue+Element ui中使用 upload实现Excel文件上传

    文章目录 业务需求: 实现方式: 具体步骤: 1.引入组件: 2.data中定义: 3.methods中方法: 业务需求: 批量导入Excel文件 实现方式: 使用组件upload 具体步骤: 1.引 ...

  3. nginx 上传文件漏洞_文件上传及解析漏洞

    注:本文仅供学习参考 文件上传定义: 文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行.这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等. 这种攻击方式是最为直接和有效的, ...

  4. fastdfs+nginx+keepalived+openoffice+lua 实现文件上传、下载、水印、预览(word、excel、ppt、txt),feign文件上传

    前言 最近刚刚实现的文件服务中心,记录一下,为没做过的人提供一下思路,由于本人技术有限,不足之处欢迎批评指正,共同学习,共同进步. 目录 Fastdfs集群搭建 搭建keepalived 实现ngxi ...

  5. php上传漏洞绕过gd库,jQuery File Upload任意文件上传漏洞

    事件背景 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个JavaScript代码库(或JavaScript框架).jQuery File Upload一个jQ ...

  6. java 文件上传漏洞_文件上传漏洞(File Upload)

    简介 File Upload,即文件上传漏洞,通常是由于对用户上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马,病毒,恶意脚本等获取服务器的webshell权限,并进而攻击控制 ...

  7. Nginx的安装基础配置(windows、linux)以及搭建图片服务器(windows、阿里云),文件上传

    Nginx的安装基础配置(windows.linux)以及搭建图片服务器(windows.阿里云),文件上传 本文目录 文章目录 Nginx的安装基础配置(windows.linux)以及搭建图片服务 ...

  8. nginx:413 Request Entity Too Large 及 修改 PHP上传文件大小配置

    开发环境:CentOS + Nginx + PHP + MySql + phpMyAdmin 在用 phpMyAdmin 进行 sql 数据库导入的时候,经常需要上传比较大的 sql 数据文件,而这时 ...

  9. 解决因nginx配置导致文件上传失败的问题 The filed file exceeds its maximum permitted size of 1048576 bytes

    解决因nginx配置问题导致文件上传失败的问题 1.问题背景 2.问题截图 3.问题分析 4.问题解决(修改nginx的配置) 5.解决之后的"后遗症"(截图) 6.分析并解决&q ...

最新文章

  1. 安装中文和英文man(c函数)
  2. Java设计模式(六)----适配器模式
  3. 编译我的第一个c语言,linux菜鸟学习写第一个C语言代码--“hello Linux!”
  4. 计算机一级考试word操作题主要题型,(word)计算机一级考试题型.doc
  5. word List 45
  6. 限定通配符和非限定通配符_为什么我不信任通配符以及为什么我们仍然需要通配符...
  7. 如何使用Postman和Newman在CI环境中自动化REST API端到端测试
  8. 如何成都报计算机考试,成都学院2017上半年计算机考试报名通知
  9. Seasonality Core for mac(世界天气预报)
  10. 滴滴这名员工的N+1飞了,离职带走公司文档
  11. Python脚本的“__name__”属性
  12. 实验一 201521410003 15网一 叶萌熙
  13. 车机常用adb 命令总结
  14. 层次分析与一致性检验
  15. C++之虚函数和虚函数表
  16. Pearson 相关分析 理论与应用
  17. 费马小定理、欧拉定理总结
  18. 【Codeforces613D】Kingdom and its Cities【虚树】【Tree DP】倍增lca
  19. mysql usleep_usleep
  20. PHP 十六大魔术方法学习

热门文章

  1. 升级每天正常更新欢迎_OPPO ColorOS 7 vivo Funtouch OS 10最新尝鲜升级计划
  2. 如何用PS改变服装色与背景色
  3. C++string去除前后空格
  4. 【91xcz】WinXP系统内存优化
  5. 【91xcz】笔者分享:Win7系统操作注意事项
  6. 360加固助手实现多渠道打包终极讲解
  7. ThinkPHP5.0之数据导出excel表格
  8. 区块链开发公司 主链开发是区块链的关键
  9. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl
  10. cocos2d-x 游戏 之 Tiled Map Editor(地图编辑)