软硬清单 外接硬盘一枚(用于挂载) 宽带、路由器(家中常备) SSH连接工具(SecureCRT,Xshell) Nginx、PHP、owncloud、ngrok 装好系统的树莓派 3B+ 一只(充电器...、CPU散热风扇等) 配置环境 安装 Nginx sudo apt-get update sudo apt-get install nginx sudo service nginx start 安装 PHP...# owncloud 需要的基础库,必须要安装 sudo apt-get install php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mcrypt...sudo apt-get install php7.0-intl php7.0-mysql php7.0-zip php7.0-dom php7.0-mbstring sudo service php7.0...; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO
*/post_max_size = 200M/" /etc/php/7.0/fpm/php.ini 重启PHP-FPM: $ sudo service php7.0-fpm reload 4....修复问题 1....*/post_max_size = 200M/" /etc/php/7.0/fpm/php.ini 重启PHP-FPM: $ sudo systemctl restart php7.0-fpm 4....安装配置Nginx $ sudo apt-get install nginx nginx-extras 生成自签名证书: $ sudo mkdir -p /etc/nginx/ssl $ cd /etc...$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO
*/post_max_size = 200M/" /etc/php/7.0/fpm/php.ini 重启PHP-FPM: $ sudo systemctl restart php7.0-fpm 4....安装配置Nginx $ sudo apt-get install nginx nginx-extras 生成自签名证书: $ sudo mkdir -p /etc/nginx/ssl $ cd /etc...$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO.../sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud 测试Nginx配置文件: $ sudo nginx -t 重启nginx: $...sudo systemctl restart nginx 6.
,PHP7.0和php7.0-fpm 直接用apt一键安装,一般都不需要下载源码编译 apt-get -y install nginx php7.0 php7.0-fpm 检查nginx和php7.0-...fpm服务运行情况 systemctl status nginx systemctl status php7.0-fpm 如无异常它应该会出现绿色的 active (running) 的提示,输入 q...chown 命令: chown -R www-data:www-data /var/www 以后每次上传网站文件之后,都可以运行一下这个命令,保证 php 对网站的文件都可写,避免出现各种奇奇怪怪的问题...修改 Nginx 配置 第二步安装nginx php7.0 php7.0-fpm的时候,一个基本的php服务器就已经搭建起来了,但我们还没有配置好,所以它暂时并不能按照我们的预期去运行。...一般来说,我们的预期是,当nginx收到的请求是指向一个静态文件的时候,nginx会将相应的文件返回给客户端,当nginx收到的请求指向php脚本时,nginx会将请求转向php7.0-fpm中处理,将处理结果返回给客户端
环境设置 软件安装 $ apt-get update $ apt-get install mysql-server mysql-client php7.0-fpm nginx 安装好了之后,可以查看这个程序是否在运行...$ /etc/init.d/nginx status ?...$ /etc/init.d/php7.0-fpm status ? $ /etc/init.d/mysql status ?...www.conf 找到listen = /run/php/php7.0-fpm.sock这一行,更换为listen = 127.0.0.1:9000 重启php-fpm $ /etc/init.d/php7.0...,会一路畅通,错误的话,会卡住,具体问题具体分析 注意 安装好之后,后台要设置升级之类的话,需要提供ftp,为了解决如此麻烦,使用下面方式处理 修改下Wordpress的配置文件,wp-config.php
1.安装mysql sudo apt-get install mysql-server mysql-client 2.安装nginx sudo apt-get install nginx 安装完后重启一下...nginx sudo server nginx restart 3.安装php7.0-fpm 解析php sudo apt-get install php7.0-fpm 4.修改nginx的配置文件 nginx...的配置文件在 /etc/nginx/site-avaliable/default 我的配置文件还有点问题,稍后再说配置文件 5.安装php的一些扩展 安装之前可以先使用 sudo apt-cache search...php7.0 查看一下可以安装什么扩展 然后使用 sudo apt-get 扩展名1 扩展名2 …… 这样环境就配置完了,现在的状态是nginx不能解析php文件,这个我刚接触nginx,水平有限,
保证PHP项目本地和服务器环境一致,避免出现一系列的问题。 目前解决这种问题最佳的方法有Docker(生产环境line)、Vagrant(用于开发环境dev)。...vagrant@ubuntu-xenial:~$ nginx -v nginx version: nginx/1.10.3 (Ubuntu) 测试Nginx vagrant.../etc/php/7.0/fpm/pool.d sudo vim www.conf # search listen = 127.0.0.1:9000 sudo /etc/init.d/php7.0...IF_REWRITE=1; fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO...$path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
最近刚好有个朋友想要学习下ubuntu系统,然后我就把一个闲置的云服务器给她玩,顺手发个她上次讲课时候的教程(教程地址)然而呢,忘记一个问题,我们当时教学用的服务器是14.2的版本,而我给她重装的是,16.04...原本的php5也因为apt源的问题无法安装,于是自己度娘加一顿操作,在ubuntu下安装了php7+mysql5.7,顺带把过程记录下来,方便以后查阅。...#apt-get -y install php7.0-fpm 这个安装应该是没有什么问题的啦。 下面就是配置喽!...重新加载 PHP-FPM: # service php7.0-fpm reload 怎么看PHP是不是跑起来了?HelloWorld?肯定不行,探针走起!...APCu可以安装如下: #apt-get -y install php-apcu 重新加载 PHP-FPM: #service php7.0-fpm reload 刷新 ip/info.php 浏览器看看模块安装情况
问题背景: php7.2 nginx thinkphp5 问题体现: url如果以/为结尾 比如index.php/admin/,不会自动访问默认控制器、方法index,而是报错 controller...值来解析的,甚至传参也可以带在path_info中 排查path_info的值 一路追踪源码,在thinkphp\library\think\Request.php 路径中,找到以下代码 /**...服务器 经过找一些资料,我得知了该变量的值是来自web服务器,也就是我使用的nginx 宝塔安装的nginx,会自动维护很多常用配置,比如不同版本的php配置、path_info配置等等(有些自己编译安装的...php没有path_info 需要自己添加) 在/www/server/nginx/conf 下有多个php版本的配置文件,在其中有一个配置项 fastcgi_index index.php; fastcgi...报错变为:controller not exists:app\admin\controller\index2\Php 可以证实是该配置影响结果 总结处理 Web服务器该配置影响了程序运行,那么我们如何解决该问题
为了将原本运行在Windows Server 2016 中IIS上的PHP环境(WordPress程序加MySql)迁移到Ubuntu Server下的Nginx上。...但是在环境的配置是,发现了一个问题,就是在Ubuntu重启后,本地站点打开php站点phpMyAdmin会出现502错误,通过多次尝试,发现主要可能是一下几个问题,也算是列举下nginx 502错误的解决方法...重新加载 PHP-FPM: # service php7.0-fpm reload ---- Q2:listen监听设置 # vim /etc/php5/fpm/pool.d/www.conf 搜索以下行...---- Q3:listen监听TCP配置出错 php的监听修改为tcp,而nginx的仍然为 sock # vim /etc/nginx/sites-available/default ?
续上一篇《让nginx支持pathinfo》 原文的配置在我本机(Win,Nginx1.2.4)还算可以,但是有一个bug,就是如果url里面包含trailing slash(最后的斜杠/)的话,PATH_INFO...捕捉到的值有误,为ATH_INFO,同时$_SERVER数组里面多了一个键名为ORIG_PATH_INFO的元素其值为我们期望的path_info,非常怪异,一开始以为是$path_info变量未定义的问题...,$p不见了,剩下ath_info,后面改过变量名之后还是不行,证明不是这个问题。...同样的配置搬到服务器上面用(CentOS6,Nginx1.0.10)完全行不通,根据官方指引(PHPFcgi Common Errors、Nginx Pitfalls)排查无果,再在网上找了许许多多的方案来来回回测试了好几十遍...折腾了很久之后还是有各种问题,其实很多PHP框架(如Yii、CI、ThinkPHP)、流行的应用系统(Wordpress、Joomla)等都支持另外一种兼容模式的pathinfo,就是通过其他方法获取path_info
也就是说,当path_info被%0a截断时,path_info将被置为空,回到代码中我就不难发现问题所在了。 ?...其中env_path_info就是变量path_info的地址,path_info为0则plien为0. slen变量来自于请求后url的长度 int ptlen = strlen(pt);...而问题就在于,我们怎么能向我们想要的位置写数据呢?又怎么向我们指定的配置写文件呢?...这个漏洞在实际研究过程中对真实世界危害有限,其主要原因都在于大部分的nginx配置中都携带了对文件的检查,且默认的nginx配置不包含这个问题。...但也正是由于这个原因,在许多网上的范例代码或者部分没有考虑到这个问题的环境,例如Nginx官方文档中的范例配置、NextCloud默认环境,都出现了这个问题,该漏洞也正真实的威胁着许多服务器的安全。
也就是说,当path_info被%0a截断时,path_info将被置为空,回到代码中我就不难发现问题所在了。...部分全局变量会在nginx的配置中定义 其中变量会在堆上相应的位置储存 回到利用过程中,这里我们通过控制path_info指向request->env来使request->env->pos置零。...而问题就在于,我们怎么能向我们想要的位置写数据呢?又怎么向我们指定的配置写文件呢?...这个漏洞在实际研究过程中对真实世界危害有限,其主要原因都在于大部分的nginx配置中都携带了对文件的检查,且默认的nginx配置不包含这个问题。...但也正是由于这个原因,在许多网上的范例代码或者部分没有考虑到这个问题的环境,例如Nginx官方文档中的范例配置、NextCloud默认环境,都出现了这个问题,该漏洞也正真实的威胁着许多服务器的安全。
在nginx下是不支持pathinfo的,但是apache支持pathinfo。 pathinfo是什么? 首先我们在nginx的html目录下新键1.php文件,打印$_SERVER <?...php echo ""; print_r($_SERVER); 尝试在地址栏输入如下参数 结果返回404 同样的代码在apache下测试 没有报错 并且页面多了PATH_INFO...字段 此时解决Nginx不支持pathinfo的问题。...但有些框架他的地址栏格式是这样的 域名+a/b/c,域名后面没有index.php 如dian.com/show/eic 这时候要使你的项目在nginx上运行就要通过url地址重写解决问题 location...中还可以通过try_files解决上述问题 location / { root html/daikuan/public; index index.php
[nginx]nginx的一个奇葩问题 500 Internal Server Error 解决方案 nginx 一直报500 Internal Server Error 错误,配置是通过phpstudy2018...修改成这样就好了 root "D:\\php\\phpstudy\\PHPTutorial\\WWW\\foxphp"; 查找了很多资料,因为很奇葩,木有多少可供参考的,之前配置单斜杠一直木有问题...有人说是地址问题,或许是单斜杠被当成转义符号了吧,那就再加一个,然后就没有然后了,php网站可以通过域名正常访问了。 好吧,nginx我确实没有系统的从头到尾学习,一般能有就好。...个人愚见,遇见了奇葩问题就记录了下来进行分享,或许能够给别人带来帮助。...fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO
所以,我们需要解决的问题是,如何配置 Nginx,调用 fastcgi 模块来让需要执行PHP的请求正确地转发到 PHP-FPM 中运行呢?...Nginx 默认不会提供 PHP_INFO,因此,如果需要这个功能,我们需要为 Nginx 的 fastcgi_param 设置关于 PATH_INFO 的信息。...include fastcgi.conf; } 经过测试,这样的配置又衍生出了新的问题,使用这个配置的时候,虽然 PHP 可以正常执行,但PHP脚本是获取不到 PATH_INFO 信息,这是为什么呢...只有当我们在了解了具体的执行流程的情况下,遇到故障,我们可以更容易更好地排查问题所在,这也是了解 PATH_INFO 的意义所在。.../nginx/ticket/321 set $path_info $fastcgi_path_info; fastcgi_param PATH_INFO $path_info; fastcgi_index
(不过很奇怪的是在官方文档中是找不到这个文档页面的,当时还是在搜索引擎中才找到的) 以下为整个过程: 正文 首先找到网站的nginx配置文件,像我这样手动安装nginx的话,配置文件应该在/etc/nginx...最后附上一些安装typecho博客过程中其他可能会出现的问题,转自服务器环境设置 - Typecho Docs : 1....\/.*)*$ 然后在location里加上 set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name...\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root...$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name;fastcgi_param PATH_INFO $path_info; 在某些老版本的
nginx版本:nginx-1.20.1 2、php.int配置修改 extension_dir = "C:\demo\soft\nginx-php-7.4.22-nts-Win32-vc15-x64...解决路径访问不到的问题。 include fastcgi.conf; #fastcgi_split_path_info ^((?...服务器传递给fastcgi的参数PATH_INFO,thinkphp需要这个入口文件index.php后的pathinfo信息 fastcgi_param PATH_INFO...和php-cgi的目录 SET php_home=D:/tools/nginx-php-5.2.17-nts-Win32-VC6-x86/ SET nginx_home=D:/tools/nginx-1.20.1...... rem 注意替换成你的nginx目录 RunHiddenConsole %nginx_home%nginx.exe -p %nginx_home% echo Starting zhfsback
在 Windows 下,需要注意的是 root 的路径,最好使用 "/" 作为路径分隔符,而不是 Windows 默认的 "\",否则容易出问题,比如,这个路径:D:\public_html\test,...默认是不支持 CGI PATH_INFO,SCRIPT_NAME 的值也不标准(糅合了 PATH_INFO) # 下面的两行指令,可以从 SCRIPT_NAME 中剥离出 PATH_INFO fastcgi_split_path_info...^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; 创建一个独立的...默认是不支持 CGI PATH_INFO,SCRIPT_NAME 的值也不标准(糅合了 PATH_INFO) # 下面的两行指令,可以从 SCRIPT_NAME 中剥离出 PATH_INFO...fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; include
在nginx上,fastcgi_split_path_info处理带有%0a的请求时,会因为遇到换行符\n,导致PATH_INFO为空,而在php-fpm对PATH_INFO进行处理时,对其值为空时的处理存在逻辑问题...,从而导致远程代码执行漏洞 在fpm_main.c文件的第1150行代码可以很明显的看出来,问题的所在 https://github.com/php/php-src/blob/master/sapi/fpm...0x02 漏洞影响 服务器环境为nginx + php-fpm,并且nginx的配置像下面这样 location ~ [^/]\.php(/|$) { ......\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } 另外,...如果使用了nginx官方提供的默认配置,将会收到影响 https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/ ? ?
领取专属 10元无门槛券
手把手带您无忧上云