XServerのcronにてLaravelのScheduleがrunしないときに確認するべきこと。

この記事は約3分で読めます。

スポンサーリンク

事象

XServerにてLaravelのSchedule:runをcronすると、下記のようなエラーが発報してうまく動作しない不具合が発生しました。

エラー内容

production.ERROR: Undefined constant "CURL_SSLVERSION_TLSv1_2" 
{"exception":"[object] (Error(code: 0): Undefined constant \"CURL_SSLVERSION_TLSv1_2\" at

どうやら、CURL_SSLVERSION_TLSv1_2という定数が未定義であるためにエラーが発生しているようです。

スポンサーリンク

原因

本エラー発生する原因はいくつかあると思いますが、今回のケースは、
cURLのバージョンが古いことが原因でした。

PHP 5.5.19 以降 で CURL_SSLVERSION_TLSv1_2 が定義されるため
PHPのバージョンが古いか、cURLのバージョンが7.34.0未満のときに未定義とエラーが出ます。

PHPのバージョンが古いときは、CLIのバージョンを変更します。
XServerは、ドメインごとにPHPのバージョンを選択できますが、CLIのバージョンは、SSHで接続してパスを通してあげる必要があります。
以下に、パス指定の方法を記載しています。

Xserverで動かしているブログが遅すぎた。が、、、遅い時にまず確認するべきこと。ページ表示が遅い人必読。
ブログや各種サービスを運営しており、手軽さの面からXserverに移行しました。しかし、移行してから動作が遅すぎる問題が発生していました。サイトの重さから、アクティブユーザやページビューの低下が顕著に数字に現れていました。なんとかしようと、...

CURLに関しては、管理者権限が無くてもできるような記事もあるにはありましたが、管理の手間が増えてしまうのであまりイレギュラーなことはしたくありません。

そもそも、CURL_SSLVERSION_TLSv1_2 の未定義エラーが発生した理由

LaravelのScheduleの内部でHttp:Getを使用していました。
Laravelでは、GuzzleというHTTPクライアントを使用しており、Laravelの7系以降の場合、デフォルトでTLS1.2が使用されるため、そもそもcURLのバージョン的に対応しておらずエラーが発生していました。

TLS1.2以上を必須としているAPIも多く、セキュリティ要件としては、暫定的な対応もしたくありません。

解決

タイトル通り、Xserver環境上での解決方法です。

新サーバー簡単移行 | レンタルサーバーならエックスサーバー
レンタルサーバー「エックスサーバー」のご利用マニュアル|エックスサーバー内で旧仕様のサーバー環境をご利用のお客様が、最新システム基盤の新サーバー環境へ簡単に移動できる「新サーバー簡単移行」機能に関するご案内です。

そもそも、旧サーバー環境(サーバー番号がsv1~sv16000.xserver.jp)だったためcURLのバージョンも古かったのです。

Xserverを新サーバに移行することでcURLのバージョンも上がり問題なく使用できるようになりました。

実際の移行感を記した記事は以下になります。

Xserverの新サーバ簡単移行を行った。移行の流れや影響、かかった時間など。
以下の様々な理由から、本サーバが「旧サーバ」と判明して乗せてるアプリケーションの都合上、サーバ移行が必要となり、本対応を行いました。公式にも手順があり、具体的な方法や旧サーバの確認方法、簡単移行が可能な環境か確認ができます。新サーバ簡単移行...

 

以上

コメント

スポンサーリンク
スポンサーリンク
タイトルとURLをコピーしました