安装
#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项目无法运行