同步操作将从 Xie Biao/laravel-s 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
// 重置Agent
\Event::listen('laravels.received_request', function (\Illuminate\Http\Request $req, $app) {
$app->agent->setHttpHeaders($req->server->all());
$app->agent->setUserAgent();
});
官方不支持
cli
模式,需手动注释掉此判断,但启用后不排除会有其他问题。
// 搜索 runningInConsole(),并注释掉该判断
$this->enabled = $configEnabled /*&& !$this->app->runningInConsole()*/ && !$this->app->environment('testing');
easywechat包会出现异步通知回调失败的问题,原因是
$app['request']
是空的,给其赋值即可。
//回调通知
public function notify(Request $request)
{
$app = $this->getPayment();//获取支付实例
$app['request'] = $request;//在原有代码添加这一行,将当前Request赋值给$app['request']
$response = $app->handlePaidNotify(function ($message, $fail) use($id) {
//...
});
return $response;
}
常驻内存后,每次调用flash()会追加消息提醒,导致叠加展示消息提醒。有以下两个方案。
1.通过中间件在每次请求处理前
或处理后
重置$messages app('flash')->clear();
。
2.每次请求处理后重新注册FlashServiceProvider
,配置register_providers。
flush
/ob_flush
/ob_end_flush
/ob_implicit_flush
:swoole_http_response
不支持flush
。
dd()
/exit()
/die()
: 将导致Worker/Task/Process进程立即退出,建议通过抛异常跳出函数调用栈,Swoole文档。
header()
/setcookie()
/http_response_code()
:HTTP响应只能通过Laravel/Lumen的Response
对象。
$_SESSION
Swoole
限制了GET
请求头的最大尺寸为8KB
,建议Cookie
的不要太大,不然$_COOKIE
可能解析失败。
POST
数据或文件上传的最大尺寸受Swoole
配置package_max_length
影响,默认上限2M
。
Warning: inotify_add_watch(): The user limit on the total number of inotify watches was reached
Linux
中Inotify
监听文件数默认上限一般是8192
,实际项目的文件数+目录树很可能超过此上限,进而导致后续的监听失败。
增加此上限到524288
:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
,注意Docker
时需设置启用privileged
。
看看鸟哥这篇文章再一次, 不要使用(include/require)_once
引入类
、接口
、trait
、函数
时使用(include/require)_once,其他情况使用include/require。
在多进程模式下,子进程会继承父进程资源,一旦父进程引入了某个需要被执行的文件,子进程再次require_once()
时会直接返回true
,导致该文件执行失败。此时,你应该使用include/require。
Swoole < 1.9.17
的环境开启
handle_static
后,静态资源文件将由LaravelS
组件处理。由于PHP环境的原因,可能会导致MimeTypeGuesser
无法正确识别MimeType
,比如会Javascript与CSS文件会被识别为text/plain
。
解决方案:
1.升级Swoole到1.9.17+
2.注册自定义MIME猜测器
// MyGuessMimeType.php
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface;
class MyGuessMimeType implements MimeTypeGuesserInterface
{
protected static $map = [
'js' => 'application/javascript',
'css' => 'text/css',
];
public function guess($path)
{
$ext = pathinfo($path, PATHINFO_EXTENSION);
if (strlen($ext) > 0) {
return Arr::get(self::$map, $ext);
} else {
return null;
}
}
}
// AppServiceProvider.php
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
public function boot()
{
MimeTypeGuesser::getInstance()->register(new MyGuessMimeType());
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。