新手入门指南:环境配置
程序支持环境
一、硬件环境
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)
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、检测环境是否合理
cms数据库配置文件在config/database.php
网站安全权限划分
本教程需要具备PHP技术或者服务器运维技术人员
什么都不懂的新手,千万千万千万千万不要来操作!!!!!!!!
网站安全首选需要让能通过web域名访问的目录都设置为不可写入权限,这样能有力保证服务器不被恶意写入非法的文件。
本教程例子中的网站web目录假设为:/www/www.xxx.com/
准备工作:
首先找到index.php的同级别目录,然后看是否存在.user.ini文件
如果不会配置这个.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服务器为例的配置:
纯静态的目的是为了此目录下的不允许执行php文件,增强被非法写入的安全性
4、进入cms后台,系统,附件设置
5、保存再更新缓存 - 更新附件缓存后,测试上传附件试试是否正常
------------- 内容编辑器中的附件URL需要使用内容维护工具进行批量替换地址
五、头像分离存储
/api/member/目录是头像存放的目录,安全起见,强烈推荐进行分离
1、将/api/member/目录移动到指定目录,例如/www/fenli/touxiang/
2、再web服务器中为此目录绑定一个域名,例如:
www.abc-touxiang.com
顶级域名二级域名都可以
3、必须设置此网站不能执行php代码,以宝塔BT服务器为例的配置:
4、进入cms后台,系统,附件设置,头像分离设置
5、保存再更新缓存后,测试上传头像试试是否正常
六、给web目录设置只读权限
通过上面一到五的配置,已经把能具有写入权限的目录分离出去了,现在web目录剩下的文件都可以不需要写入权限
/www/www.xxx.com/
现在为web目录设置,只读权限,例如555权限。
友情提示:如果网站需要生成静态文件,需要提前为web目录开启读写权限,生成完毕后,再设置只读权限
部分内容无法保存
当在保存内容时出现部分内容没有保存成功的情况,
例如在用户权限配置时没法前面部分可以保存成功,但是后面部分没有保存成功,说明post数据超限了,设置方法:
在php.ini找到
max_input_vars
用来限制提交的表单数量,默认值为 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错误,也可能是这个问题引起的。
百度搜索关键字:
如何关闭防跨目录访问
可以删除根目录的的user.ini文件
这里有专门对user.ini文件的配置介绍:https://www.xunruicms.com/doc/982.html
BT移动端无法访问有效解决方案:
0x01:解析移动端域名至服务器
0x02:BT面板新建网站,选择宸逸CMS根目录,并且创建网站
0x03:新建好的网站:设置 - 网站目录 - 运行目录 - 选择 /mobile - 保存
0x04:访问移动端域名,可以正常打开。
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
以上参数分别代表是:
服务器地址 数据账号 数据库密码 数据库名称 数据表前缀
带端口的写法是: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、可以让你的空间商帮你配置环境
上传图片:找不到临时文件
这种提示通常是上传文件时服务器返回的错误提示
错误原因:
一、配置文件没有设置临时文件夹
二、临时文件夹没有或者上级文件夹没有相应的权限
处理方式:
找到PHP配置文件php.ini,找到以下代码
;upload_tmp_dir =
改为:
upload_tmp_dir = "C:\Windows\Temp"
这个地址是设置的临时目录地址,必须可用,必须有读写的权限
如果是权限不够的情况,可以根据不通的操作系统系统分别给其文件加上相应的权限
.user.ini 作用和配置
.user.ini是php防跨站目录访问的文件配置,里面放的是你网站的文件夹路径地址。
目的是防止跨目录访问和文件跨目录读取。
配置文件都是放在根目录 .user.ini
例如Bt面板创建后的格式如下:
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、宝塔面板解除方式
2、阿里云虚拟主机解除方式
登录主机管理控制台,选择 高级环境设置 > PHP.ini设置,找到 PHP函数chmod设置,单击 启用,启用chmod函数,单击 保存设置。
3、其他虚拟主机平台,建议联系主机服务商那边的技术人员帮你开启
PHP让cpu使用率100%,负载状态100%
ssl登录linux服务器,使用top命令
一、PHP占用高
观察到php进程占用100%,记住进程PID:3295,然后输入下面命令:
显示socket最高,分析原因,应该是跟服务器上的webserver有关,然后分析进程:
显示函数pcntl_wait() 函数已被禁用,于是去宝塔面板解封这个函数:
最后,在宝塔里面重启web服务器(包括重启服务器电脑)。
重启电脑后观察cpu占用正常了。
二、Mysql占用高
图中发现是mysql占用高,那么需要找到哪个mysql的语句导致了的
1、登录mysql
在linux的shell中继续输入:
mysql -h localhost -u 数据库账号 -p 数据库名
输入数据库密码,回车进入mysql控制台
2、输入命令:
show processlist
查看当前 mysql 使用频繁的 sql 语句
然后找到上面sql代码复制一个,手动运行下,也可以放到phpmyadmin里面运行更直观
从数据来看就属于慢查询,花费时间过长导致资源占用。
后台-设置-日志管理-慢查询日志:
如果没有记录,需要开启日志,然后访问前端才会自动记录。
对应的模板,删掉这些模板代码再观察一下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可能会注册更多的封装协议。
试用版插件安装方式
试用插件的运行环境,建议在本地安装一个宝塔面板
安装试用插件不能在已有网站后台安装,必须在一个全新的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环境参数菜单
查找关键字:
auto_append_file
auto_prepend_file
如果发现这个两个参数都有值的话,这些值并不是自己加的,那么极大可能性是你服务器被篡改了,需要清空值。
在服务器中找到并打开:php.ini文件,找到这个参数,设置为空即可。