lnmp相关问题

2019-02-12  本文已影响0人  phpdi

安装

 #ubuntu18.04下先安这个curl扩展,不然php 中curl 请求https会报502
sudo apt-get install libcurl4-gnutls-dev

# https://lnmp.org/auto.html 这里可以生成无人值守安装命令
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && LNMP_Auto="y" DBSelect="4" DB_Root_Password="root" InstallInnodb="y" PHPSelect="8" SelectMalloc="1" ./install.sh lnmp

.user.ini 问题


Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/ddup/vendor/autoload.php) is not within the allowed path(s): (/home/wwwroot/ddup/public/:/tmp/:/proc/) in /home/wwwroot/ddup/public/index.php on line 24

Warning: require(/home/wwwroot/ddup/vendor/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/ddup/public/index.php on line 24

Fatal error: require(): Failed opening required '/home/wwwroot/ddup/public/../vendor/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/ddup/public/index.php on line 24

这个问题是由于引入路径非法导致的,原因有两个

1.lnmp 包默认为网站入口路径添加了.user.ini文件,但我使用的laravel 框架,其真实的项目路径为/home/wwwroot/ddup,而不是/home/wwwroot/ddup/public,所以我们要修改.user.ini 文件

#.user.ini文件是加锁文件不能直接进行修改,我们先将其解锁
sudo chattr -i .user.ini
sudo vim .user.ini
#原内容:/home/wwwroot/ddup/public/:/tmp/:/proc/
#修改后:/home/wwwroot/ddup/:/tmp/:/proc/

#重启
sudo lnmp restart

2.这时候我们访问网站依旧报同样的错误,原因是在/usr/local/nginx/conf/fastcgi.conf 中有这么一行

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
#这句话意味者会将运行时的入口路径赋值给open_basedir ,这里还是相当于open_basedir=/home/wwwroot/ddup/public/:/tmp/:/proc/
#所以我们需要注释掉这句

#重启
sudo lnmp restart

问题解决

laravel项目fileinfo扩展问题

默认安装下,fileinfo扩展没有被安装,有两种安装方式

1.还没有安装lnmp

vim /usr/local/lnmp1.5-full/lnmp.conf
# 修改 Enable_PHP_Fileinfo='n' 为y
Enable_PHP_Fileinfo='y'

2.已经安装好了lnmp

cd /usr/local/lnmp1.5-full/src
tar xvf  php-7.2.6.tar.bz2 
cd php-7.2.6/ext/fileinfo
phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
#安装成功后添加扩展 extension=fileinfo.so
vim /usr/local/php/etc/php.ini 

disable_functions 问题

lnmp 为安全考虑替我们禁用了很多函数

disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

#proc_open,proc_get_status 这两个得删除,否则laravel项目无法运行
上一篇 下一篇

猜你喜欢

热点阅读