如果使用的是宝塔环境,只需要在PHP→设置→扩展管理启用该扩展。
以上操作完成后需要重启PHP服务才能生效。
编辑php.ini文件,找到disable_functions并将其中的xxx函数移除,然后重启服务器即可。
为什么要使用这些函数?
如果使用的是宝塔环境,只需要在PHP→设置→禁用函数删除该函数。
后台一键升级前请备份系统的完整文件和数据库,如果系统有自定义开发,升级不保证不会破坏系统原有数据。
如遇到报错打不开请按照如下步骤排查
在安装过程中,伪静态错误是经常会出现的问题,可以根据以下几种方式进行排错:
如果确信伪静态规则无误,可以通过访问/install/ping来访问,如果页面结果为OK则表示伪静态配置成功。
基础工作的准备可以让你更快的定位错误
第一步,检测Apache是否支持mod_rewrite
完成以上操作后,重启Apache。
第二步,让apache服务器支持.htaccess
OptionsFollowSymLinksAllowOverrideNone12改为
OptionsFollowSymLinksAllowOverrideAll12第三步,检查网站的.htaccess文件是否正确
部分软件配置时会覆盖ModStart默认的.htaccess文件,检查public/.htaccess文件是否为一下内容。
“500错误”或“请求出现错误”通常是程序处理发生错误。
需要查看storage/logs/目录下的日志文件,找到当天最新的日志文件(如laravel-2021-01-01.log),查看报错原因并解决。
错误日志需要定位到最新的错误日志,完整的一条错误日志通常如下格式所示,将该错误日志寻求其他开发者帮助(注意隐藏日志中的敏感信息)。
[2022-01-1010:28:15]product.ERROR:xxxStacktrace:#0xxx#1xxx#2xxx#3xxx#4xxx#5xxx#xxxx123456789如果是发生在测试或开发环境,为了快速定位,可按照如下步骤排查
如没有在系统目录找到记录的日志,请检查网站的目录权限是否正常,需要保证PHP的运行用户可以写入storage/logs/目录。
应用日志没有记录的情况下,通常是由于致命错误导致进程异常结束,可能的原因有内存溢出、底层库调用异常等。
Apache环境
Apache的错误日志因配置各异,通常情况下
Nginx环境
Nginx的错误日志因配置各异,通常情况下
使用现代化浏览器(推荐Chrome),在页面右击,点击审查元素,切换到Network,查看导致页面加载慢的请求。
网站经过多层代理转发,通常在调用action方法生成URL时会出现异常。
这时可以通过在.env文件中设置如下两个配置来修正:
第二步,诊断是否为前端异常
使用现代化浏览器(推荐Chrome),在页面右击,点击审查元素,切换到Console,查看是否有任何报错。
出现类似如下错误
Failedopeningrequired'xxx/module/Vendor/Web/routes.php'**Stacktrace:#0{main}123系统在运行时为了提高性能会缓存部分文件路径,在新环境如果路径不一致会导致缓存文件加载失败。只需要清除缓存即可,步骤如下:
Tips:删除目录中的所有文件,注意不要删除目录本身,完成后重试
访问模块市场提示「请求出现错误」,同时接口后台/module_store/all返回502错误。
如果其他页面访问正常,通常还会看到PHP-PMF的错误日志
[error]2874786#0:*8565recv()failed(104:Connectionresetbypeer)whilereadingresponseheaderfromupstream***12出现该错误,可能的原因有:
(1)TCP/IP问题
主要现象是在服务器完成下载内容之前连接被关闭,可能是网络问题,有可能导致的因素
(2)内核Bug
请注意,在v2.6.17之后的一些Linux内核上,TCP窗口扩展存在一些问题,更多参考
(3)PHP的CURL扩展Bug
这些Bug可能是
我们曾经排查过几个类似问题,最终无果。该问题的影响因素较多,遇到该问题后,我们建议更换PHP版本。
为了安全起见,系统不支持后台用户密码的找回。如果忘记后台管理密码,只需要使用专业数据库工具修改后台用户表admin_user即可。
修改对应的用户password和passwordSalt字段。
SQL参考
配置前
配置后(取消注释,去掉分号)
配置完成后需重新PHP服务。
宝塔环境
如果是宝塔环境,请在软件商店→PHP→设置→配置文件查找always_populate_raw_post_data=-1去掉之前的分号;,完成后操作服务→重载配置。
php在curl的时候报此错误:
2)将以下行添加到php.ini
curl.cainfo=cacert.pem路径#如Windows配置curl.cainfo=c:\wwwroot\cacert.pem#如Linux配置curl.cainfo=/etc/cacert.pem12345宝塔环境配置:在软件商店→PHP→设置→配置文件→搜索替换curl.cainfo配置,操作完成后点击服务→重载配置。
第一步,修改.env文件,打开调试模式
#配置调试模式未开启APP_DEBUG=true12第二步,查看异常的请求信息(以Chrome浏览器为例)
在异常页面上右击,点击“检查”,网页底部弹出开发者工具。
点击①“网络”②“全部”,点击③清空所有请求历史。
继续在页面上完成正常操作(比如提交动作),这时开发者工具会出现网络异常请求。
通过点击异常的网络请求,查看Payload、Preview、Response可以查看到请求数据和返回的错误信息。
在提问时候至少将上述的错误信息发送给其他小伙伴,别人才能帮你解答问题。
ModStart使用的Laravel5.1框架默认不支持MySQL8.0数据库,如果需要支持,请参考以下方法。
修改vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php文件,查找
publicfunctioncompileColumnExists(){return'selectcolumn_namefrominformation_schema.columnswheretable_schema=andtable_name=';}1234修改为
!!!郑重说明!!!:虚拟主机通常无法绑定运行目录到子目录,因此部署时会出现太多的安全隐患,配置比较繁琐,我们强烈不推荐!此方法只给技术爱好者作为测试参考,不再提供额外技术支持。
!!!重要的事!!!:在虚拟主机配置环境下,由于网站的所有数据都被暴露在浏览器访问路径下,因此要控制系统的系统文件不被访问到,当配置好之后,至少要测试一下路径不能直接被用户下载,否则系统将会受到严重威胁。
!!!其他说明!!!:使用中遇到问题可直接百度/Google搜索虚拟主机部署Laravel关键词自行解决。
使用虚拟主机安装前,请先下载环境的检测程序进行空间自荐,不满足要求的虚拟主机将不能安装。
如果虚拟主机根目录可以绑定到<网站目录>/public目录,请绑定到<网站目录>/public目录,随后执行/install.php安装向导。
如果虚拟主机根目录不支持绑定到<网站目录>/public,需要按照如下配置:
Nginx参考配置
server{listen80;server_namewww.example.com;charsetutf-8;indexindex.phpindex.html;root/var/www/html/www.example.com;autoindexoff;location^~/.git{denyall;}location^~/.env{denyall;}location^~/storage/{denyall;}location/{try_files/public$uri/public$uri//public/index.php$query_string;}location~\.php${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramPHP_VALUE"open_basedir=/var/www/html/www.example.com/:/tmp/:/var/tmp/";fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}}123456789101112131415161718192021222324252627282930313233Apache参考配置
web.config配置
这里统一回复
本系统已有过日均新增数据百万+、单表总量10亿+、集群节点50+的生产环境经验,不同阶段均有不同阶段的技术方案,所以上述问题简单的回答是与不是均不妥。
我们会永远对技术保持敬畏之心。
提示如下错误
require():open_basedirrestrictionineffect***1open_basedir设置是防跨站攻击的,出现这个错误需要进行如下设置。
Nginx参考处理
在网站的Nginx配置增加
server{#...location~\.php${#...#需要设置到网站根目录www.example.comfastcgi_paramPHP_VALUE"open_basedir=/var/www/html/www.example.com/:/tmp/:/var/tmp/";#...}#...}12345678910Apache参考处理
安装系统时通常会需要解禁system,exec,passthru,shell_exec,popen,proc_open等危险函数。部分集成环境会提示危险函数风险,通常可以如下方式解决:
该函数在通常只是在系统系统安装/系统升级/模块安装/模块升级/模块禁用/模块删除时使用到,日常系统的运行是不需要依赖该函数的,因此可以在常规运行中将危险函数加入到disable_functions中,只需要在必要的情况下再打开。具体为什么使用到这些函数可以参考Q:安装环境检查提示缺少xxx函数。
宝塔系统运行提示open_basedirrestrictionineffect***这样的错误,通常是运行目录设置错误导致的,可对照下如下配置。
检查数据库连接地址
Windows下数据库连接有域名解析问题,检查配置文件<网站根目录>/.env,如果是localhost,修改为127.0.0.1
#如果配置是DB_HOST=localhost#修改为DB_HOST=127.0.0.11234安装opcache
Windows下PHP默认没有安装opcache,可通过宝塔软件商店安装
系统优化
①打开CMD命令窗口②进入到项目根目录,如cdD:\wwwroot\example.com,默认如果是C盘需要切换盘符(执行D:)③运行artisan命令,如D:\BtSoft\php\70\php.exeartisanoptimize
运行出现Allowedmemorysizeofxxxbytesexhausted,通常是由于内存不足导致的,可通过如下方式解决:
修改php.ini配置文件,增加memory_limit配置,如memory_limit=2048M,重启PHP服务
如果是宝塔环境,可参考如下修改
如果开启了堡塔防入侵插件,默认会拦击非root用户的所有操作。可以通过增加需要运行的程序白名单即可
如要运行的命令为/xxx/xxxstartfoo填写/xxx/xxx到白名单即可。
通常是由于应用程序php/nginx找不到某个库导致。通常可通过①手动安装库②链接库操作来完成,其中②是可选步骤。
系统邮件发送采用了队列的方式(队列名为default),如果你开启了队列而没有监听默认队列,则可能会出现收不到邮件的方式。
Laravel5
/xxx/bin/php/www/example.com/artisanqueue:workdatabase--queue=default--sleep=3--tries=1--timeout=864001Laravel9
系统支持记录LONG_REQUEST、LONG_SQL、MASS_REQUEST_SQL多种指标,用于性能优化分析。通过在配置文件.env增加TRACK_PERFORMANCE=true开启新能追踪。
开启后,如果未生效可清除下缓存(删除bootstrap/cache/目录下的所有文件),日志中可能会出现性能信息。
查看第二步网站性能追踪记录的日志信息,分别解决LONG_REQUEST慢请求、LONG_SQL慢SQL的问题。
通常是由于页面静态资源加载异常或者页面有JS报错导致的,可尝试通过以下方法来解决:
最新的系统使用了是否使用root运行phpartisan命令的检测,如果是root用户运行会提示Youcan'trunthiscommandasroot(uid=0).错误。
解决方法:
sudo-uwww/xxx/bin/php/www/example.com/artisanxxx1其中,
MySQL5.7版本默认开启了only_full_group_by模式,导致在查询时出现thisisincompatiblewithsql_mode=only_full_group_by错误。
出现这样是因为MySQL默认的sql_mode模式导致的,解决方法如下:
##查看当前的sql_modeselect@@sql_mode;##比如结果为ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION##修改sql_mode去掉NO_ZERO_IN_DATE,NO_ZERO_DATEsetsql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';12345以上的修改只是临时生效,如果需要永久生效,需要修改MySQL配置文件my.cnf,增加如下配置