我有一个在 php 8.2 上运行的 Laravel 10 应用程序。现在我在生产中面临 api 调用的困难。只是澄清一下:API 工作正常,这是导致问题的一种特定路线。
这是 API 控制器的代码:
public function indexContact(): JsonResponse
{
return response()->json([
'captcha' => Captcha::create('math', true),
'categories' => ContactController::CATEGORIES,
]);
}
验证码是通过 mews/captcha 包中的
use Mews\Captcha\Facades\Captcha;
导入的。
现在我收到一个 Sentry 问题,说
Undefined property: Intervention\Image\EncodedImage::$encoded
,它被抛出到 Captcha::create
的调用堆栈中。面包屑显示,在应用程序出现错误之前,验证码已写入缓存。
我尝试自己对服务器进行 API 调用,但收到了 500 内部服务器错误。
但是当我启动本地环境(具有相同的 git 版本)并在那里运行 API 请求时,它成功了,没有问题。我已经检查并比较了软件包版本和代码,本地主机和生产环境都具有相同的作曲家锁定条目。部署时没有错误。我很感谢任何帮助。
如果本地和远程环境绝对相同,我建议你通过运行来清除laravel缓存(特别是路由缓存)
php artisan optimize
php artisan config:cache
php artisan config:clear
还要仔细检查 php 扩展、启用的 php 版本和安装的软件包
composer show -i
php -i