分类 后端 下的文章



原因是网站目录指向的是public
解决办法:
1.cd 到nginx目录下,打开fastcgi.conf
2.vim /usr/local/nginx/conf/fastcgi.conf
3.修改 (yy + p复制行)

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";  

改为

 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";

重启ngnix或者lnmp即可
php_basedir.png

第一步:在lnmp1.4找到php安装的版本
lnmp1.4/src
使用命令 tar -jxvf php-7.1.7.tar.bz2 解压

第二步: 在解压的php-7.1.7文件夹里找到fileinfo文件夹,然后使用命令 cd /home/xxx/lnmp1.4/src/php-7.1.7/ext/fileinfo 进入到fileinfo文件夹
在此目录下执行
第三步:/usr/local/php/bin/phpize,得到数据
在此目录下执行
第四步: 使用如下命令编译安装

./configure -with-php-config=/usr/local/php/bin/php-config
make && make install

第五步:再修改/usr/local/php/etc/php.ini 查找:extension = 再最后一个extension= 后面添加上extension = "fileinfo.so" 保存,执行/etc/init.d/php-fpm restart 重启。

nignx运行PHP PHP_SELF为空
设置php.ini
cgi.fix_pathinfo=1
但是 这样会存在漏洞
【漏洞分析】location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。

关闭

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

重启

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

cat /usr/local/php/var/run/php-fpm.pid
获取到 php-fpm 的 进程id ,如果PHP 安装在别的目录,需要修改相应的目录
kill 杀死进程
INT(快速关闭)----是当用户键入时由终端驱动程序发送的信号。这是一个终止当前操作的请求,如果捕获了这个信号,一些简单的程序应该退出,或者允许自给被终止,这也是程序没有捕获到这个信号时的默认处理方法。拥有命令行或者输入模式的那些程序应该停止它们在做的事情,清除状态,并等待用户的再次输入。