はかなしごと[六畳半神話]

しがないエンジニアの備忘録。

[PHP] PHPのset_time_limit() #備忘録

こんにちは。
また詰まったのでメモ。
解釈はあっていないかもなので参考程度に。

エラーというか不具合?の内容

TwitterAPIを使って検索するときに、検索に時間がかかる場合を回避するため

 set_time_limit(50); 

と指定して、FatalErrorが出たらリダイレクトする、という処理を書いています。

ローカルの開発環境ではリダイレクトがうまくいくのですが、
レンタルサーバーの環境ではうまくいかず、けっこうはまっていました。

不具合の理由

set_time_limit() は、Windows環境なら想像通りの挙動をしてくれるが、
それ以外だと注意が必要?ということでした。
私のローカルはWindowsなのでうまくリダイレクトしてくれていたけど、
レンタルサーバーはUNIX系だったので思った通りの挙動をしてくれてないのかなって
安直ですが結論付けました。
実際にset_time_limitが効いていない挙動でしたので…。
なんでもそうですが、やっぱり公式が一番ですね。

参考:
https://man.plustar.jp/php/function.set-time-limit.html
https://codesapuri.com/articles/php-set-time-limit

さいごに

まさかOSとの相性のことが原因だなんて思いもしませんでした。
これまでWindowsでしか開発してこなかったので、新たな学びでした。

この不具合の解決策は見つけてないです、すみません。
誰かのお役に立てたのなら幸いです。

[PHP/Laravel]バージョンのダウングレード(9.*→8.*) #備忘録

はじめに

Laravel初心者です。足りない情報などあればすみません。


すでにプロジェクトを作ってしまっているLaravelのバージョンダウングレードに関して、あまり詳細が見つけられなかったので自分用にメモ。


[前提条件]
・Composerインストール済

[環境情報]
・Laravel 9.*(詳細覚えてない)
PHP 8.0.11

[ダウングレード]
・Laravelだけバージョン8.*にしたい。
PHPはそのままです

手順

〈事前準備〉
※かならずプロジェクトをフォルダごとバックアップをとって、ダウングレードに失敗した時もすぐ復元できるようにしておいてください

① プロジェクトの作成

プロジェクトを作成したいフォルダまでカレントディレクトリを移動させます。

cd [projparent]
composer create-project --prefer-dist laravel/laravel [projname] "8.*"

② (使用する場合のみ)パスワード認証機能

composer require laravel/ui

php artisan ui bootstrap --auth
php artisan ui vue --auth
php artisan ui react --auth

マイグレーション

php artisan make:migration

④ (使用する場合のみ)TwitterOAuthをインストール

composer require abraham/twitteroauth

⑤ (使用する場合のみ)OAuth認証のため

composer require laravel/socialite

【一度確認】

これでLaravel自体のグレードは8系統に下がっています。
プロジェクトをカレントディレクトリにして下記コマンドで確認

php artisan --version

バージョンが下がっていればOK。
初期画面が出るかの確認は次のコマンド

php artisan serve

http://localhost:8000/ でLaravelの初期画面が出てくればOK。

⑥ プロジェクトで新規作成したファイルたちをコピーしてくる

ここからは私はファイルの数が少なかったので手作業でやりました・・。
先ほどバージョンを下げて作成したLaravelプロジェクトにファイルを入れられるのであれば方法は何でもよい気がします。
appフォルダ、resourceフォルダ、routeフォルダあたりの自分で作成したものだけをコピーします。
※authフォルダなど、とくに自分が手を加えてないのであればコピーしてこない方がいい気がします。

完了

これで、いままで同様アプリケーションが動かせ始めたら完成です。

エラーについて

1つ考えられる不具合は

composerを実行できない

プロジェクト内にvendorフォルダがあるかどうか確認してみてください。
①vendorフォルダがある場合
ComposerのバージョンがLaravel8系統とうまくかみ合ってない可能性があるので、composerを適正なバージョンに更新します。

composer update --prefer-source

②vendorがない場合 または ①を実行できたのにうまくいかない場合
vendorフォルダがある場合は一度フォルダごと消しましょう。
プロジェクトをカレントディレクトリにして、

composer update --prefer-source

あるいは

composer install

さいごに

個人的メモであること、また当方Laravel初心者であることをふまえ、
十分な手順を書けていなかったら申し訳ありません。
この記事がなにか解決の糸口になれば幸いです。