自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

  • PHPでmb_strlenもしくはstrlenがNotFoundのときの対策

    mb_strlen()もしくはstrlen()がNotFoundになるときは、下記コマンドを実行してphp-mbstringをインストールする #PHPのバージョンは合わせる sudo apt install php8.1-mbstring ちなみに、strlen()はバイト数、mb_strlen()は文字列の長さ(マルチバイト文字を1文字とみなす)を返す。 ...
  • composerでLaravel9.xプロジェクトが作れない問題に対処する【php8.1】

    ある日、composerコマンドを実行してLaravelプロジェクトを作ろうにも、エラーが出て作れない。 composer create-project --prefer-dist laravel/laravel testlaraveler1 を実行すると下記が得られる。 Creating a "laravel/laravel" project at "./testlaraveler1" Info from https://repo.packagist.org: #StandWithUkraine Installing laravel/laravel (v9.3.5) - Downloading laravel/laravel (v9.3.5) - Installing laravel/laravel (v9.3.5): Extracting archive Created project in /home/akagi/Documents/programming/php/laravel_test03/testlaraveler1 > @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - spatie/laravel-ignition[1.0.0, ..., 1.4.0] require ext-curl * -> it is missing from your system. Install or enable PHP's curl extension. - Root composer.json requires spatie/laravel-ignition ^1.0 -> satisfiable by spatie/laravel-ignition[1.0.0, ..., 1.4.0]. To enable extensions, verify that they are enabled in your .ini files: - /etc/php/8.1/cli/php.ini - /etc/php/8.1/cli/conf.d/10-opcache.ini - /etc/php/8.1/cli/conf.d/10-pdo.ini - /etc/php/8.1/cli/conf.d/15-xml.ini - /etc/php/8.1/cli/conf.d/20-calendar.ini - /etc/php/8.1/cli/conf.d/20-ctype.ini - /etc/php/8.1/cli/conf.d/20-dom.ini - /etc/php/8.1/cli/conf.d/20-exif.ini - /etc/php/8.1/cli/conf.d/20-ffi.ini - /etc/php/8.1/cli/conf.d/20-fileinfo.ini - /etc/php/8.1/cli/conf.d/20-ftp.ini - /etc/php/8.1/cli/conf.d/20-gettext.ini - /etc/php/8.1/cli/conf.d/20-iconv.ini - /etc/php/8.1/cli/conf.d/20-phar.ini - ...
  • Laravelで.env(環境変数)に指定した値をチェックする方法【コントローラ・ビュー】

    例えば、コントローラなどで開発段階とデプロイ後で処理を切り分けたい事がある。そういう時は、.env(環境変数)に指定した値を参照してif文で分岐させれば良い。 コントローラで環境変数に指定した値を確認する。 if ( env("APP_DEBUG") ){ \Log::debug("APP_DEBUGはTrueです"); } else{ \Log::debug("APP_DEBUGはFalseです"); } これで解決す ...
  • Laravel 8.x系のroute/web.phpはこう書く【Target class [Controller Name] does not exist.】

    Laravel7.x系はサポートが切れているので早めにLaravel8.x系にしたいところ。 ルーティングの記法が変わっているので確認しましょう。 –resourceの場合 こうする。 #7.x系以前の書き方。 #Route::resource('/topics', 'TopicsController'); #8.x系以降の書き方。 use App\Http\Controllers\TopicsController; Route::resource('/topics', TopicsController::class); 冒頭で予めコントローラをuseしておく。 コントローラのアクションと逆引き用の名前を指定する場合。 こうする。 #7.x系以前の書き方。 #Route::get('/topics', 'TopicsController@index')->name('topics.index'); #8.x系以降の ...
  • Laravel8.xでページネーターのSVGの矢印がおかしいので修正する。

    問題だらけのLaravel8.xでまた問題が出てきた。ページネーションを普通に使うと、このようにSVGが狂っており、巨大化する。 修正 app/Providers/AppServiceProvider.phpにて下記のようにする。 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Pagination\Paginator; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { Paginator::useBootstrap(); } } これでLaravel7.x以前のBootstrapを使った普通のページネーション ...
  • LaravelのHerokuデプロイがPHPバージョン問題で必ず失敗する問題は、バージョンアップで対処する【ERROR: Dependency installation failed!】

    経緯 2021年12月某日、今日もLaravelのプロジェクトの開発を終え、『さあデプロイだ』とHerokuへデプロイをすると、下記のようなエラーメッセージが出た。 原因 これまで、普通にデプロイできていて、今日になってなぜデプロイに失敗するのか。どこかで設定ファイルの編集ミスったかと思いあれこれ確認してみたが、原因はわからない。 そこでStackOverflowにて、検索してみると、同様のエラー報告がみ ...
  • LaravelでSendgridを使ってメール送信【認証・通知に、ライブラリのインストールは不要】

    特別なライブラリなどは必要ない。 流れ .envにてAPIキーなどを設定 make:mailコマンドでメールの雛形一式を作る メールのモデルを作る メールのテンプレートを作る 送信処理を実行する .envにてAPIキーなどを設定 まず、.envにてSendgridで手に入れたAPIキー等の情報を格納 MAIL_MAILER=smtp MAIL_HOST=smtp.sendgrid.net MAIL_PORT=587 MAIL_USERNAME=apikey MAIL_PASSWORD=[ここにSendgridで手に入れたAPIキーを記録する] MAIL_ENCRYPTION=tls MAIL_FROM_ ...
  • 【Laravel】Herokuにデプロイした後、URLをhttpsにする【デフォルトではhttpから始まるため、クライアントのブラウザが静的ファイルの読み込みに失敗する問題の対策】

    HerokuにLaravelをデプロイした後の話。デフォルトではHTTPSではなく、HTTP通信であるため、静的ファイルのアクセスは暗号化されない。 それが原因で、クライアントのブラウザのセキュリティが発動して、静的ファイルの読み込みを拒否する。結果、CSSやJavaScript、画像などの読み込みに失敗し、サイトレイアウトが乱れる。 ビューでassetやroute等を使用している場合、それら全てがh ...
  • LaravelをCloudinaryを使用したHerokuにデプロイ、画像やファイルをアップロードする

    画像やファイルをアップロードするLaravelウェブアプリをオンプレミスではなく、クラウド(とりわけHeroku)にデプロイしたい場合、ストレージ問題を解決する必要がある。普通のLaravelアプリのHerokuデプロイはそれほど難しくはないが、Cloudinaryを使うとなると情報が限られ、難易度も高い。 そこで本記事では限られている情報に少しでも貢献するため、画像やファイルアップロード機能のある ...
  • 【Laravel】CSSやJS等の静的ファイルを読み込む【public/static/】

    静的ファイルの読み込みができれば、JSやCSSだけでなくサイトの画像を前もって用意することができる。 本記事では予めプロジェクトに配置したCSSやJSを読み込み、表示させる方法を解説する。 publicディレクトリ内にstaticディレクトリを作る まず、静的ファイル関係を記録するディレクトリを作成する。 Laravelにはpublicというディレクトリが用意されており、通常はそこにCSSやJS等を保管す ...