- 1. php -vで確認したバージョンとは違うバージョンですとエラーに言われて困った話
- 2. コアサーバーのDB環境をローカルに再現
- 3. [PHP] Git Commit 時にコードの整形、静的解析を実行
- 4. WSL2のubuntuにapacheとphpをインストールしてバージョン管理
- 5. PHP で .txt ファイルから文字列を読み取り、配列に変換し表示させる
- 6. 【Laravel】画像保存処理実行時のエラー対処
- 7. LaravelのEloquentに $fillable でなく $guarded を使う
- 8. LaravelのAuth機能でログアウト後の遷移先を変更したい
- 9. HumHubの検索にApacheSolrを使わせてみる(前編)
- 10. 11月25日の学習
- 11. WordPressで記事のタグ名を取得するショートコードを作成
- 12. ポーリングによる状態チェックを軽量化した話
- 13. いろいろな言語でAPIコールするよ!
- 14. ループ処理、switch文、break文、continue文の組み合わせには要注意(迷子になるから)
- 15. PHP 配列に値があるかチェックするメソッド
- 16. PHP 大文字 小文字を区別せずバイナリを使って文字列を比較するメソッド
- 17. Apacheで特定のディレクトリについてPHPを無効にする
- 18. [500 server error]Mac再起動後にSQLに接続できず、Laravelのプロジェクトをローカル環境で確認できなくなった時
- 19. CodeIgniter3でViewファイルをもとにHTMLファイルを出力する
- 20. 【Laravel・PHP】preg_match(): Unknown modifier ‘�’ のエラー
php -vで確認したバージョンとは違うバージョンですとエラーに言われて困った話
#### 環境
M1 Macbook Air
MAMPCakephpの環境構築過程でcomposer updateを実施したところ下記のエラーが発生。
“`
$ composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.Problem 1
– Root composer.json requires php <8.0 but your php version (8.0.13) does not satisfy that requirement. Problem 2 - phpunit/phpunit[6.0.0, ..., 6.5.14] require php ^7.0 -> your php version
コアサーバーのDB環境をローカルに再現
#はじめに
サーバーにサイトをあげる際には、まずローカルのテスト環境で同じものを作って、動作を確認してからサーバーにあげますよね。
私はレンタルサーバーのコアサーバーでデータベースを使っていますが、テスト環境でも同じ仕様のデータベースを作ろうとしました。ただ、コアサーバーでは独自のコントロールパネルを使って、データベースを作るので、ローカルで同じ状況を再現するのには少々苦労しました。
ここに、コアサーバーと同一のmysql環境を構築するまでの道のりを記録として残します。コアサーバー使っている少数の初心者の参考にできればと思います。##環境
サーバー側
コアサーバー :プラン CORE-MINI
DB:mySQLローカル側
ubuntu 20.04
DB:mySQL##①Mysqlへログイン
###ローカル側
“`shell
mysql -u root
#若しくは
sudo mysql
“`###コアサーバー側
写真1「データベースの設定画面」
※個人設定のある枠はぼかしています
![Screenshot from 2021-11-27 17-05-41.
[PHP] Git Commit 時にコードの整形、静的解析を実行
### プロジェクトに整形ツール、静的解析ツールを導入
“`
cd /プロジェクトのパス/
composer require –dev friendsofphp/php-cs-fixer
composer require –dev phpmd/phpmd
composer require –dev phpstan/phpstan
composer update
“`### git commit 時に呼び出されるファイル pre-commit の用意
“`
copy .git/hooks/pre-commit-sample .git/hooks/pre-commit
“`### pre-commit の編集
“`
vi .git/hooks/pre-commit
“`“`shell:.git/hooks/pre-commit
# 指定ブランチへのpush防止
while read local_ref local_sha1 remote_ref remote_sha1
do
if [[ “${remote_ref##refs/heads/}” = “
WSL2のubuntuにapacheとphpをインストールしてバージョン管理
この記事は、zennに書いた [WSL2のubuntuにapacheとphpをインストールしてバージョン管理](https://zenn.dev/sakots/articles/a4217c84e10a41) のコピーです。
—
さこつです。無事退職しました。
XAMPPのアップデートめんどくさい!でも自分のPC環境でphpのバージョン管理したい!!と試行錯誤した結果、
WSL2のubuntuにapacheとphpをインストールすることになったお話。## ubuntuのapacheならラクそう
こういう記事があった。[ubuntu20.04.1 phpのバージョンを切り替える](https://mebee.info/2020/08/17/post-16891/)
## そうだ、WSL2のubuntuにapacheを入れて管理しよう
### 1.上記をもとにphpをインストール
ただし、2021年11月27日時点でphp8.1をインストールするとapacheが503エラーで動かなくなるので注意。
7.3、7.4、8.0くらいにしとく。その後、apacheインスト
PHP で .txt ファイルから文字列を読み取り、配列に変換し表示させる
プログラミング初心者の Qiita 初投稿なのでヘタクソな文面、ご了承ください。
PHP を習いたてで、下記のような流れで制作していて少しつまずいた点を書いていきます。
1. 「post.php」というファイルで form を作成し「write.php」へ送信
2. 「write.php」から「data.txt」へデータを書き込み
3. 「data.txt」のデータを「read.php」というデータで読み取り今回詰まったところは上記 3 の手順です!
ということで自分が詰まって、解決まで数時間かかった超しょぼいオチをご覧ください。まず、「data.txt」は以下のデータが入っております。
“`
2021-11-25 06:37:41,たけし,a@g.com,29
2024-6-09 12:08:26,まさる,aghf@aggaag.com,40
“`左から順に「日付, 名前, メールアドレス, 年齢」です。
今回は 2 人がフォームを送ってくれたので、 2 行です。
はい、そして僕が最初に書いたのはこちら ↓“`cpp
【Laravel】画像保存処理実行時のエラー対処
###Laravelで画像保存処理を実行中、遭遇したエラーと対処法をまとめました。
##開発環境
* PHP7.4
* Laravel6
* Bootstrap4.4
* Docker20.10.8##前提
* 画像保存処理は実装済み
* テーブル作成・マイグレーション実行済み
* バリデーション実装済み
* フォーム作成済み
* プレビュー表示処理実装済み(JavaScript)
* `Intervention Image` インストール済み
* `public artisan storage:link` 実行済み##❗注意
:::note warn
コマンドをコピペして実行する際、コマンドの最後に余分なスペースが入らないよう注意しましょう。
コマンドが強制実行される場合があります。実行の際は慎重に。
:::##目次
>1. 画像が正常に保存されない。
2. GD Library extension not available with this PHP installation.解決##1. 画像が正常に保存されない。
* フォームをクリックして拡張子`.JPEG
LaravelのEloquentに $fillable でなく $guarded を使う
# はじめに
今回はEloquentの **$fillable** 指定についてです。
基本的に **$guarded** を使う方が良いと思っているのでそれについて簡単に書いてみようと思います。# **$fillable** と **$guarded**
## $fillable
**$fillable** は指定したカラムのみ、create()やfill()、update()で値が代入される、所謂ホワイトリストです。
“`php
LaravelのAuth機能でログアウト後の遷移先を変更したい
# はじめに
LaravelのAuthを使用してログイン機能を実装。
ログアウト後の画面を”/home”ではなく”/”に変更したい。# 実装内容
LoginControllerへ以下を追記しました。“`PHP:loginController
protected function loggedOut(\Illuminate\Http\Request $request)
{
return redirect(“/”);
}
“`# おわりに
すごく簡単でした。。
Laravel本当に便利すぎます。。
もともと、loggedoutは実装されてませんでしたが、/homeへリダイレクトされるようになってるんですね
どのような補完をおこなっているんでしょうか
HumHubの検索にApacheSolrを使わせてみる(前編)
#はじめに
HumHubには標準で検索機能がついてはいるものの、検索はコンテンツ本文、タグ、トピックに対する単語の列記でのAND検索、可能なフィルタは情報ソースのタイプ(種類:スペース名かユーザー名かコンテンツか)とスペースの絞り込みの対応である。このままでも使えなくはないのだが、将来、ウェブサーバーの冗長化に対応できるようにすることをモクロミ、全文検索システムサーバーを別に立てて利用することを検討する。#調査
HumHubでは、そのプロフェッショナルバージョン(有料)で、HumHub謹製Solrプラグインを追加利用できる。お金とHumHubを信じる心があるときはそれを使えばよいだろう。いずれも持ち合わせない金銭的にも心も貧しい私のような人は、Solrに接続してクエリを投げて回答を得られる機能を持つプラグインを、自前で作ればよいのだ。その方向で調査を続行した。そう、私は心が貧しい・・・。
####HumHubの検索機能
HumHubはDBにMysqlを使っているので、Mysqlの全文検索機能を使っているのかと思ったが、違った。
(参考)
https://tech.bita.j
11月25日の学習
本日はテックアカデミーの最初のメンタリングがありました。
その中でQiitaというサービスをメンターさんから教えてもらい、始めました。
現在はレッスン9のチャプター2まで進んでいます。これから毎日学習報告をさせていただければと思います。
気づいたことや感じたことを逐一書いていきます。初心者ですが、よろしくお願いします。本日の進捗
テックアカデミー
レッスン8の課題に取り組みクリア
My SQLの学習に入る。今日はレッスン8の課題に取り組みましたが、nl2brの関数に手こずったり、h3タグをtableに入れてしまうというミスがありました。もう一度bootstrapのカリキュラムを見直ししたりしないといけないなと感じました。
これからひとまず25分のポモドーロ・テクニックで集中力を切らさないように学習していきたいです。
明日からMySQLの学習に入ります。また新しいことですが、一生懸命頑張りたいと思います。
WordPressで記事のタグ名を取得するショートコードを作成
WordPressで記事のタグ名を取得するショートコードを作成しました。
## 目的
WordPressで全記事に共通して表示されるキャッチコピーやマイクロコピー、固定の文言をより具体化したいと考えたため。
例)
Pythonの解説記事、PHPの解説記事、Javaの解説記事といった風に言語ごとに記事のタグが設定されているサイト構造の場合。>[タグ名(PHPなど)]に関して分からないことがありましたらお問い合わせフォームへ。
[タグ名(PHPなど)]で困ったらこちらのプログラミングスクールがおすすめです。といた風に表記内容を具体化できる。
## 作成方法
### 1. タグ名を取得するPHPファイルをテーマ内に作成
まずはタグ名を取得するためのPHPファイルをWordPressテーマ内に作成します。
“`php:get_tag_name.php
ポーリングによる状態チェックを軽量化した話
# はじめに
__注・最初っからそうしとけよ、という話です。__
研修で使うようなゲームっぽいプロダクト(ゲームマスター:プレーヤー=1:n)で、双方が行った操作(データ変更)をお互いにある程度リアルタイムで検知するために、ポーリングを用いて定期的にチェックすることで実現していました。
ポーリングを用いたのは下記の理由によります。
* push型が理想だがミドルウェア構成をシンプルにしたかった
* 仕組みも簡単だし確実
* DBの問い合わせも軽そうなので負荷もそれほどではないだろう(甘かった)# 現実に全力で殴られる
さていざ実戦投入してみると、数十クライアント程度でCPUがパンパンになって、ロードアベレージが100近くまで行きました。
DBを外に出したり、ポーリング間隔をあけたりしましたが、劇的な効果は得られませんでした。
(php-fpmがアイドリングでもなぜかCPUを食いっぱなしになるという現象もあったのでそれも一因かもしれません。これはstraceで真面目に調べようと思ったら突如再現しなくなりました。)
# 反攻に出る
これは根本的に対策せねばなるまいとい
いろいろな言語でAPIコールするよ!
## 導入
webAPIの叩き方を各言語でまとめました。
後で見返す用です。
2021年11月23日時点:Postリクエスト送信### json リクエストのサンプルパラメータ
“`python
sample_endpoint = “http://localhost:8888/sample”
sample_parameter = {
“title”: “トマトスープ”,
“making_time”: “15分”,
“serves”: “5人”,
“ingredients”: “玉ねぎ, トマト, スパイス, 水”,
“cost”: “450”
}
“`
### Curl
“`terminal
curl –location –request POST ‘http://localhost:8888/recipes’ \
–header ‘Content-Type: application/json’ \
–data-raw ‘{
“title”: “トマトスープ”,
“making_time”: “15分”,
ループ処理、switch文、break文、continue文の組み合わせには要注意(迷子になるから)
まずは以下のプログラムを見ていただきたい。
※このプログラム自体に意味はありません。参考用にサンプルで作ったものなので、ツッコミどころはいっぱいありますが、一応動きます。“`php:sample.php
1, ‘type’ => 1, ‘col1’ => ‘1-col1’, ‘col2’ => ‘1-col2’, ‘col3’ => ‘1-col3’, ‘col4’ => ‘1-col4’],
[‘id’ => 2, ‘type’ => 0, ‘col1’ => null, ‘col2’ => null, ‘col3’ => ‘2-col3’, ‘col4’ => ‘2-col4’],
[‘id’ => 3, ‘type’ => 2, ‘col1’ => ‘2-col1’, ‘col2’ => ‘2-col2’, ‘col3’ => ‘2-col3’, ‘col4’ => ‘2-col4’]
];function fileterData(array $data)
{
$res
PHP 配列に値があるかチェックするメソッド
# 目的
– 配列に値があるかチェックする`in_array()`メソッドの使い方を簡単に紹介する。
# 情報
– 下記のサイトを用いてこちらに記載するソースの検証を実施した。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
– 下記のように`in_array()`メソッドを用いて値があるかチェックする。(第三引数でtrueを渡すとデータ型も含めて評価してくれる。)
“`php
in_array(探したい値, 配列, true);
“`# 例
– 下記のようにソースを記載して実行してみる。
“`php
PHP 大文字 小文字を区別せずバイナリを使って文字列を比較するメソッド
# 目的
– PHPにてバイナリを用いて文字列を比較する方法をまとめる
# 情報
– 下記のサイトを用いてこちらに記載するソースの検証を実施した。
– [https://paiza.io/ja](https://paiza.io/ja)# 方法
– `strcasecmp()`メソッドを使用して比較する。
– ASCII文字だけが、大文字小文字を区別せず比較されるらしい。
– `$str_1`と`$str_2`をそれぞれ比較してみる。
– `$str_1`には「aaa」を、`$str_2`には「AAA」を格納し下記のように比較してみる。“`php
Apacheで特定のディレクトリについてPHPを無効にする
以下の設定を\
ディレクティブ内に記載する。 “`apache:httpd.conf
php_value engine off
“`有効にしたい場合は
“`apache:httpd.conf
php_value engine on
“`より深い階層の設定が有効になるので、上記の組み合わせで「全体で無効、特定のディレクトリで有効」という設定も可能。
ちなみに以下のように記載するという記事もあったが、自分の環境ではうまく動かなかった。
“`apache:httpd.conf
RemoveType .php
“`
[500 server error]Mac再起動後にSQLに接続できず、Laravelのプロジェクトをローカル環境で確認できなくなった時
以前作成したLaravelのプロジェクトの修正を行おうとしていつも通りMAMPを起動してブラウザで表示しようとしたら、、、
![スクリーンショット 2021-11-24 16.23.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2292175/3cc6c7e2-64a6-d982-1dd8-9d8dd8ee0c60.png)
~~もういやだ~~
独学者にはこういうのが一番効きます。#開発環境
“`
$ sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165
$ mysql –version
mysql Ver 14.14 Distrib 5.7.35, for osx10.16 (x86_64) using EditLine wrapper
$ php artisan –version
Laravel Framework 6.20.30
“`#解決手順
とりあえず.envのデバッグ設定をオン
CodeIgniter3でViewファイルをもとにHTMLファイルを出力する
こんなこと誰かがやってそうなもんですけど、全然記事が見つからないので
自分で実装することにしました。~~今更こんな枯れたフレームワーク使ってるとこないか~~
もっと良い方法あったら教えてちょ“`bash
# ファイル出力テスト用のディレクトリを作成して書き込み権限を付与
mkdir /var/www/html/test/
sudo chmod -R 777 /var/www/html/test/
# ファイル出力テスト用のControllerを作成
touch /var/www/html/admin/application/controllers/tools/View.php
# ファイル出力テスト用のViewを作成(レンダリングにはTwigライブラリが必要です)
touch /var/www/html/admin/application/views/user/test/hello.twig.html
“`“`php:/var/www/html/admin/application/controllers/tools/View.php
【Laravel・PHP】preg_match(): Unknown modifier ‘�’ のエラー
## 状況
正規表現を用いて、文字の検索をかけたいのでpreg_matchを使ったところタイトルのエラーが発生。
## コード“`php
$target = ‘/’ . $request->name . ‘/’;
$names = $collection->filter(function($value) use ($target){
return preg_match($value[‘name’], $target);
});
“`
## 原因
preg_matchの第一引数と第二引数を逆に記述したことによるエラー。
本来は第一引数に正規表現、第二引数に元データを記述しなくてはならない。“`php
return preg_match($target, $value[‘name’]);
“`
とっても単純なエラーでした。