💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
[TOC] ### 1、空字符串被转成null app\Http\Kernel.php中的中间件`\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class`默认将空字符串转成null值,这里要注释掉 ### 2、数据库报错 是否设置了模型类里 $timestamps=false,如果不设置会默认在insertSql中加入`created_at`字段,updateSql中会加入`updated_at`字段,如果数据库为设计会报错 数据库模型类,可以显示指定$connection和$table并用`Illuminate\Support\Facades\DB::connection($connection)->table($table)`显示连接 ### 3、配置问题 绝大多数的配置都是取.env文件的常量配置,没有才设置默认值 ### 4、版本库管理 最好在声明项目仓库首次提交时,要将以下文件和目录忽略 1.配置文件.env,本地开发可以单独发本地或测试文件到项目或覆盖,但不能提交,因为可能使用钩子同步更新远程仓库作为测试环境,本地和测试环境的配置可能不一样,且测试环境的配置不一定想让所有人知道 2.缓存目录storage,在目录默认存放框架日志,debug日志以及log类日志,一旦提交版本库,本地调试提交代码时,会有非常多的modify提示,非常麻烦 ### 5、权限问题 本地开发默认的用户是root,而服务器上通常是web服务器所在的用户和用户组 laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied ``` # 不要将目录设置为777。应该更改目录所有者。因此,设置不能访问的目录和文件的所有者和所有组, # 为web服务器的所有者和所有组: sudo chown -R $USER:$USERGROUP storage sudo chown -R $USER:$USERGROUP bootstrap/cache # 然后设置目录权限试试这个: chmod -R 775 storage chmod -R 775 bootstrap/cache # $USER:$USERGROUP 即为 所有者:所有组,通过下面方法获取后替换即可 # Web服务器用户和组依赖于你的Web服务器和操作系统。 # 找出你的Web服务器用户和组使用以下命令的内容。 # 对于nginx使用: ps aux|grep nginx|grep -v grep # 用于apache: ps aux | egrep '(apache|httpd)' ``` ### 6、Class 'XXXXXX' not found 出现了本地window环境跑正常,发到linux测试环境就报类无法找到,看了下测试环境代码,有确实有。 网上参考了:https://www.jianshu.com/p/0bb5d7211dfa 猜测是框架用了composer自动化加载类的规范,可能有缓存还是什么,解决办法是在测试服务器上安装composer ``` > curl -sS https://getcomposer.org/installer | php > mv composer.phar /usr/local/bin/composer # 到项目vendor同级目录,执行以下命令 > composer dumpautoload # 再刷新下页面就好了,针对我这种情况,亲测有效 ``` ### 7、CSRF报错:CSRF token mismatch. app\Http\Middleware\VerifyCsrfToken.php ``` <?php namespace App\Http\Middleware; use Closure; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; use Illuminate\Session\TokenMismatchException; class VerifyCsrfToken extends Middleware { /** * Indicates whether the XSRF-TOKEN cookie should be set on the response. * * @var bool */ protected $addHttpCookie = true; /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ // ]; public function handle($request, Closure $next) { try { return parent::handle($request, $next); } catch (TokenMismatchException $ex) { // dd($ex->getMessage()); if($ex->getMessage() == 'CSRF token mismatch.'){ die(json_encode(\App\Tool\Functions::fail('页面长时间未操作,请先刷新页面', \App\Tool\ErrorCode::UNOPERATE_TOO_LONG))); } } } } ```