新手入门指南:环境配置

程序支持环境

一、硬件环境

1、入门级:

CPU内存1核1G、硬盘40GB、带宽1M

2、普通级:

CPU内存1核2G、硬盘40GB、带宽2M

3、增强级:

CPU内存2核4G、硬盘40GB、带宽4M

4、数据级:

CPU内存4核16G、硬盘100GB、带宽4M


二、操作系统

1、推荐环境:

Linux CentOS 7.0 x64以上


2、其他环境:

Windows 不推荐,PHP程序不推荐Win系统



三、软件环境

程序支持环境:

PHP7.2+  推荐PHP8
Mysql5.6+  推荐Mysql8


推荐集成环境包:


1、宝塔面板(linux/windows)

https://www.bt.cn/


2、Xp集成环境(windows)

https://www.xp.cn/download.html


php.ini配置

php.ini文件位置不固定,每个主机的目录不一样,需要咨询服务商此文件的位置


post_max_size 
表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的 
默认为8M,设置为自己需要的值,此参数建议要设置比upload_max_filesize大一些 


upload_max_filesize 
允许上传文件大小的最大值,默认为2M,设置为自己需要的值此参数建议不要超过post_max_size值,因为它受控于post_max_size值(就算upload_max_filesize设置了1G,而post_max_size只设置了2M时,大于2M的文件照样传不上去,因为它受控于post_max_size值) 


max_input_vars

用来限制提交的表单数量,默认值为 1000, 如果你网站栏目太多的话,而且需要配置用户权限的时候会发现无法保存,这时候说明这个值太小了,设置10000一般够用。


max_execution_time

每个PHP页面运行的最大时间值(秒),默认30秒 


max_input_time

每个PHP页面接收数据所需的最大时间,默认60秒


memory_limit

每个PHP页面所需要的最大内存,默认128M ,可以设置大一些


allow_url_fopen

fsockopen,使用QQ登录、微信、微博快捷登录、在线支付、下载远程图片等功能时必须开启allow_url_fopen,设置为 allow_url_fopen = On。


ZipArchive

zip解压扩展包,不开启就无法使用应用商店

大文件上传 设置方法

1、打开php.ini(打开方式就不用说了,百度一大堆) 

2、查找post_max_size 
表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的 
默认为8M,设置为自己需要的值,此参数建议要设置比upload_max_filesize大一些 

3、查找File Uploads 
是否允许通过http上传文件的开关,确认file_uploads = on 

4、查找upload_tmp_dir 
文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹 
如果系统报错提示有“XXX临时目录XXX”的话,这个目录就需要你来设置一个有效目录,没报错就不用管 

5、查找upload_max_filesize 
允许上传文件大小的最大值,默认为2M,设置为自己需要的值此参数建议不要超过post_max_size值,因为它受控于post_max_size值(就算upload_max_filesize设置了1G,而post_max_size只设置了2M时,大于2M的文件照样传不上去,因为它受控于post_max_size值) 

6、如果要上传大于8M的文件,还需要对下面的参数也进行设置: 

查找max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒 
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 
memory_limit = 999999M ;每个PHP页面所需要的最大内存,默认8M 

7、服务器限制文件上传大小


IIS配置

打开IIS管理器,找到Default Web Site。先进行停止。
在IIS中双击“请求筛选”打开。
点击右边的“编辑功能设置”,打开“编辑请求筛选设置”对话框。
     其中的允许的最大容量长度,默认是”30000000“,30M,将其修改为你所需要的大小即可。
启动IIS.

Nginx配置

修改nginx.conf中的http段: 
client_max_body_size 1024m; #我这里是1024MB

Apache配置

可以在 .htaccess 或 httpd.conf 加入以下语句:

LimitRequestBody 1024000000




8.重启web服务 

网站目录权限划分

网站正式上线时的文件权限划分:

1、/dayrui/

此目录必须设置为只读状态,防止写入,安全起见这个目录设置浏览器不可访问


2、/config/

只读权限,它是用来存储一些自定义程序文件


3、/cache/

全部可读写权限,它是用来写缓存文件的,安全起见这个目录设置浏览器不可访问


4、/uploadfile/ 或 /public/uploadfile

文件上传目录,必须全部可读写权


5、/template和/static 或 /public/static

推荐可读权限,模板和风格目录,如果需要后台编辑模板的话就需要设置可读写权限


6、/api/member/ 或 /public/api/member

会员头像存储目录,需要可读写权限



开发期间权限划分:

1、/dayrui/App/

当需要创建网站表单、内容模块、模块表单时,必须有可读写权限


2、/template/

当需要创建模块时,必须有可读写权限


创建表单或模块完毕之后,恢复《网站正式上线时的文件权限划分



在线升级时注意:

后台升级版本是必须设置全站可读写权限。

在线完毕之后,恢复《网站正式上线时的文件权限划分


Linux系统权限设置方法:

读写权限:chmod 777 -R /文件目录/
只读权限:chmod 755 -R /文件目录/


PHP环境侦探工具

在宸逸CMS安装包中的根目有一个文件是:test.php

如果没有这个文件,请下载:https://gitee.com/dayrui/xunruicms/blob/master/test.php


通过url进行访问

http://网站/test.php

如果能正常打开的话,表示你服务器支持php程序。


test.php脚本会:

1、查看php版本是否支持

2、是否支持mysql数据库

3、检查mysql数据库账号是否正确

4、检测环境是否合理

image



cms数据库配置文件在config/database.php

网站安全权限划分

操作视频:https://www.xunruicms.com/doc/video-%E7%BD%91%E7%AB%99%E7%9B%AE%E5%BD%95%E5%88%86%E7%A6%BB%E9%85%8D%E7%BD%AE.html

网站安全权限划分

本教程需要具备PHP技术或者服务器运维技术人员

什么都不懂的新手,千万千万千万千万不要来操作!!!!!!!!

网站安全首选需要让能通过web域名访问的目录都设置为不可写入权限,这样能有力保证服务器不被恶意写入非法的文件。

本教程例子中的网站web目录假设为:/www/www.xxx.com/

准备工作:

首先找到index.php的同级别目录,然后看是否存在.user.ini文件

image

如果不会配置这个.user.ini的设计人员可以删除它(后期一定要设置这个文件的权限),如何配置.user.ini教程里面有介绍

开始分离:

一、分离cache目录

cache目录必须具备可写入权限,默认可以通过web访问其内容,推荐把cache目录分离到其他目录(SSD硬盘最佳)

1、将cache目录移动到指定目录,例如/www/fenli/cache/

2、打开web目录的 index.php

3、查找// 缓存文件存储目录,支持自定义路径,建议固态硬盘存储缓存文件

define('WRITEPATH', '/www/fenli/cache/');

4、赋予新的cache可读写权限,如果网站正常访问就表示ok了

二、分离dayrui目录

dayrui目录是程序文件目录,存储的php业务逻辑程序文件,通常情况下需要具备可读写权限

1、将dayrui目录移动到指定目录,例如/www/fenli/dayrui/

2、打开web目录的 index.php

3、查找 //系统核心程序目录,支持自定义路径和改名 

将代码修改为 define('FCPATH', '/www/fenli/dayrui/');

4、赋予新的dayrui可读写权限,如果网站正常访问就表示ok了

三、分离模板template目录

template目录是存放模板文件的,实际项目中不建议将其暴露在web目录中,推荐进行分离

1、将template目录移动到指定目录,例如/www/fenli/template/

2、打开web目录的 index.php

// 此代码放到【执行主程序】代码之前
define('TPLPATH', '/www/fenli/template/');

3、赋予新的template可读写权限,如果网站正常访问就表示ok了

四、分离附件存储目录

uploadfile目录是附件存放的目录,安全起见,强烈推荐进行分离

1、将uploadfile目录移动到指定目录,例如/www/fenli/uploadfile/

2、再web服务器中为此目录绑定一个域名,例如:

www.abc-file.com

顶级域名二级域名都可以

3、必须设置此网站不能执行php代码,以宝塔BT服务器为例的配置:

image.png

纯静态的目的是为了此目录下的不允许执行php文件,增强被非法写入的安全性

4、进入cms后台,系统,附件设置

image.png

5、保存再更新缓存 - 更新附件缓存后,测试上传附件试试是否正常

------------- 内容编辑器中的附件URL需要使用内容维护工具进行批量替换地址


五、头像分离存储

/api/member/目录是头像存放的目录,安全起见,强烈推荐进行分离

1、将/api/member/目录移动到指定目录,例如/www/fenli/touxiang/

2、再web服务器中为此目录绑定一个域名,例如:

www.abc-touxiang.com

顶级域名二级域名都可以

3、必须设置此网站不能执行php代码,以宝塔BT服务器为例的配置:

image.png

4、进入cms后台,系统,附件设置,头像分离设置

image.png

5、保存再更新缓存后,测试上传头像试试是否正常

六、给web目录设置只读权限

通过上面一到五的配置,已经把能具有写入权限的目录分离出去了,现在web目录剩下的文件都可以不需要写入权限

/www/www.xxx.com/

现在为web目录设置,只读权限,例如555权限。

友情提示:如果网站需要生成静态文件,需要提前为web目录开启读写权限,生成完毕后,再设置只读权限

部分内容无法保存

image.png


当在保存内容时出现部分内容没有保存成功的情况,

例如在用户权限配置时没法前面部分可以保存成功,但是后面部分没有保存成功,说明post数据超限了,设置方法:


在php.ini找到

max_input_vars

image.png

用来限制提交的表单数量,默认值为 1000, 如果你网站栏目太多的话,而且需要配置用户权限的时候会发现无法保存,这时候说明这个值太小了,设置6000 ~ 10000一般够用。


访问跨目录文件

当移动端绑定域名、多站点绑定域名、模块绑定域名时情况下,会提示

当前服务器无法访问跨目录文件

Warning: require(): open_basedir restriction in effect. File(../index.php) is not within the allowed path(s)类似错误如何解决?

在绑定域名时需要读取网站目录以外的目录index.php,如何关闭/修改LNMP/LNMPA/LAMP的放跨目录设置?

因为LNMP默认是不允许跨目录访问的,所以需要将防跨目录访问的设置去掉,

参考 https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini 进行设置,

有时候可能会提示500错误,也可能是这个问题引起的。

image.png


百度搜索关键字:

如何关闭防跨目录访问



可以删除根目录的的user.ini文件

这里有专门对user.ini文件的配置介绍:https://www.xunruicms.com/doc/982.html




BT移动端无法访问有效解决方案:


0x01:解析移动端域名至服务器

0x02:BT面板新建网站,选择宸逸CMS根目录,并且创建网站

0x03:新建好的网站:设置 - 网站目录 - 运行目录 - 选择 /mobile - 保存

0x04:访问移动端域名,可以正常打开。

微信截图_20200628120228


php开启mb_string函数库

1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。

2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到;extension=php_mbstring.dll

然后将前面的;号去掉,打开对组件的支持

3.重启PHP服务(如果不会你可重新启一下计算机)

4.完成


php开启curl扩展

开启php curl函数库的步骤


去掉php.ini 文件里;extension=php_curl.dll前面的; 

重启web



数据库配置文件

系统框架的数据库配置文件是:

config/database.php

image.png

以上参数分别代表是:

服务器地址
数据账号
数据库密码
数据库名称
数据表前缀

带端口的写法是:127.0.0.1:3307


如何验证数据库是否可用呢?

1、使用PHP环境侦探工具

http://help.xunruicms.com/396.html

2、访问test.php工具会自动做出检测方案


zip扩展安装

PHP需要支持zip扩展类

ZipArchive

如果没有zip扩展,就无法在线下载应用市场的作品、无法在线升级、无法在线解压zip文件


开启方法:

1、可以百度找开启步骤

https://www.baidu.com/s?ie=UTF-8&wd=php%20%E5%BC%80%E5%90%AFzip%E6%89%A9%E5%B1%95


2、可以让你的空间商帮你配置环境

上传图片:找不到临时文件

image

image


这种提示通常是上传文件时服务器返回的错误提示


错误原因:

一、配置文件没有设置临时文件夹

二、临时文件夹没有或者上级文件夹没有相应的权限



处理方式:

找到PHP配置文件php.ini,找到以下代码

;upload_tmp_dir =

改为:

upload_tmp_dir = "C:\Windows\Temp"

 这个地址是设置的临时目录地址,必须可用,必须有读写的权限


如果是权限不够的情况,可以根据不通的操作系统系统分别给其文件加上相应的权限


.user.ini 作用和配置

.user.ini是php防跨站目录访问的文件配置,里面放的是你网站的文件夹路径地址。

目的是防止跨目录访问和文件跨目录读取。

配置文件都是放在根目录 .user.ini

image


例如Bt面板创建后的格式如下:

15942658680d734d.png

 open_basedir=/项目路径/:/tmp/:/proc/   


当做了目目录分离的时候需要把分离的目录都加进去,或者把共同的父目录写进去就表示包含旗下全部子目录可访问权限

,否则会提示找不到这个目录或者这个目录不可写的错误提示

open_basedir=/www/wwwroot/:/tmp/:/proc/

 


no input file specified

您好网站搬家后更换了域名打开后台的时候出现这个只有首页可以打开

访问网站提示:no input file specified

为什么会出现这个问题,表示你访问的网站目录中没有这个文件或者文件无法被识别,首先我们先从第一个可能性测试


===================测试文件是否存在================

1、在网站目录新建一个a.html,内容随意

2、再通过浏览器访问这个文件

3、如果仍然提示no input file specified,表示你域名没有正确绑定到指定目录

如果正常访问,那么往下看


===================测试文件是否被识别===============

1、跟上面操作类似,新建一个a.php文件,内容随意

2、通过浏览器访问这个a.php

3、如果仍然提示no input file specified,表示服务器不支持php,只有找服务商帮你启用php功能


PHP自带的函数被禁止如何开启

1、宝塔面板解除方式

{xunruicms_img_title}


2、阿里云虚拟主机解除方式

登录主机管理控制台,选择 高级环境设置 > PHP.ini设置,找到 PHP函数chmod设置,单击 启用,启用chmod函数,单击 保存设置。

{xunruicms_img_title}


3、其他虚拟主机平台,建议联系主机服务商那边的技术人员帮你开启



PHP让cpu使用率100%,负载状态100%

{xunruicms_img_title}

ssl登录linux服务器,使用top命令


一、PHP占用高

{xunruicms_img_title}


观察到php进程占用100%,记住进程PID:3295,然后输入下面命令:

{xunruicms_img_title}

显示socket最高,分析原因,应该是跟服务器上的webserver有关,然后分析进程:

{xunruicms_img_title}

显示函数pcntl_wait() 函数已被禁用,于是去宝塔面板解封这个函数:

{xunruicms_img_title}

最后,在宝塔里面重启web服务器(包括重启服务器电脑)。

重启电脑后观察cpu占用正常了。

{xunruicms_img_title}


二、Mysql占用高

PHP让cpu使用率100%,负载状态100%

图中发现是mysql占用高,那么需要找到哪个mysql的语句导致了的

1、登录mysql

在linux的shell中继续输入:

mysql -h localhost -u 数据库账号 -p 数据库名

输入数据库密码,回车进入mysql控制台

PHP让cpu使用率100%,负载状态100%


2、输入命令:

show processlist

查看当前 mysql 使用频繁的 sql 语句

PHP让cpu使用率100%,负载状态100%

然后找到上面sql代码复制一个,手动运行下,也可以放到phpmyadmin里面运行更直观

PHP让cpu使用率100%,负载状态100%

从数据来看就属于慢查询,花费时间过长导致资源占用。

后台-设置-日志管理-慢查询日志:

PHP让cpu使用率100%,负载状态100%如果没有记录,需要开启日志,然后访问前端才会自动记录。


对应的模板,删掉这些模板代码再观察一下cpu正常的话,就不要这个标签,或者找宸逸官方人员给你优化一下mysql。

fopen打开远程文件失败

fopen打开远程文件失败

在php.ini将检查并确认allow_url_fopen已被开启成功。

需要PHP配置中(php.ini)将allow_url_fopen的值设置为On。

按照默认设置,这个值本身就是On的。

如果allow_url_fopen已经为on,还是依然报错,就是服务器的DNS问题,造成了路由结果中有部份路由执行超时,最终PHP执行时间超时导致用到这类型的函数时报错。


如果allow_url_fopen关闭了,PHP将发出一个警告,而fopen的调用则失败。

allow_url_fopen:本选项激活了URL形式的fopen封装协议使得可以访问URL对象例如文件。

默认的封装协议提供用ftp和http协议来访问远程文件,一些扩展库例如zlib可能会注册更多的封装协议。

试用版插件安装方式

试用插件的运行环境,建议在本地安装一个宝塔面板

视频操作教程:https://www.xunruicms.com/doc/video-xr-%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85%E8%AF%95%E7%94%A8%E7%89%88%E7%9A%84%E6%8F%92%E4%BB%B6.html



安装试用插件不能在已有网站后台安装,必须在一个全新的cms里面安装


------------操作步骤--------------------------

1、必须在这里下载一个全新的宸逸cms大众版

https://www.xunruicms.com/down.php

---

2、安装新的宸逸cms大众版(必须要全新安装cms大众版,选择php版本72(必须用PHP72环境)

试用版插件安装方式

3、在php环境中开启php扩展:ionCube,例如宝塔设置方法:

试用版插件安装方式

重启PHP、重启服务器

3、进入cms后台,应用市场,找到这个试用插件,然后点离线下载安装。

4、将下载后的插件ZIP包,上传到web目录,如下图所示

试用版插件安装方式

5、解压这个插件包

试用版插件安装方式

6、前往cms后台,应用管理,即可看到这个插件,如下图

试用版插件安装方式




php.ini中auto_prepend_file参数疑似可疑代码

在后台系统体检中,提示

php.ini中auto_prepend_file参数疑似可疑代码
php.ini中auto_append_file参数疑似可疑代码

然后进入系统提交,菜单,php环境参数菜单

php.ini中auto_prepend_file参数疑似可疑代码

查找关键字:

auto_append_file

auto_prepend_file

php.ini中auto_prepend_file参数疑似可疑代码

如果发现这个两个参数都有值的话,这些值并不是自己加的,那么极大可能性是你服务器被篡改了,需要清空值。

在服务器中找到并打开:php.ini文件,找到这个参数,设置为空即可。

php.ini中auto_prepend_file参数疑似可疑代码