PHP関連のことを調べてみた2022年02月24日

PHP関連のことを調べてみた2022年02月24日
目次

twitterを快活クラブから借りたパソコンでリモワで見るWebサービス

https://jflabo.naturum.ne.jp/e3467003.html

リモワ対応 借りたマシンでも仕事できるように調整中

一時行政系も 効率よく情報を配信する道具として使っていましたね
あのあと使えなくなった人が結構いて 悩ましいです。

元記事を表示

GitHub Actions workflowについてのススメ

# 概要

`GitHubActions`を利用したテストワークフローの構築について社内布教用にまとめてみた

# 経緯

@ucan-lab さんのハンズオンに参加して個人的に導入はしているがチーム内で技術共有をしてなかったので布教用としてまとめることにしました
なお、今回の`workflow`については以下のハンズオン資料を流用させていただいています。

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#github-actions-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%93%E3%83%AB%E3%83%89%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F

https://php-builders.connpass.com/event/239066/

# 解説

https://docs.github.com/ja/actions/learn-github-actions/understanding-githu

元記事を表示

[OCI]ウォレットを使用せずにPHPアプリケーションからAutonomous DatabaseにTLS認証で接続してみた

#はじめに
[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事では、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続できることを確認しました。

今回は、php-oci8を使用したPHPアプリケーションから、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続してみます。

[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事で作成したAutonomous DatabaseとComputeインスタンスを使用して環境を構築します。

#1.PHP、php-oci8、httpd(Apache2)のインストールと設定
yumコマンドでPHP、php-oci8とApache2をインストールします。

“`
[opc@compute1 ~]$ sudo yum install -y oracle-

元記事を表示

APIから気象情報を取得してグラフ化

#はじめに
OpenWeatherMapAPIから気象情報を取得してChart.jsを使ってグラフ化してみました。
例として、「現在の時刻から24h後までの東京都の気温の変化」を取得します。

環境
– Laravel6系(PHP)
– OpenWeatherMapAPI
– Chart.js(JavaScriptライブラリ)

##ソースコード例
“`ChartController.php
‘各自で取得’,
‘lat’ => ‘26.231408’, //沖縄の那覇市の緯度
‘l

元記事を表示

これでわかるLaravel8.Xのマルチ認証(Multi Auth)の設定方法

https://reffect.co.jp/laravel/laravel-multi-authentication-understand#i-5

“`web.php
Route::prefix(‘employee’)->namespace(‘Emplyee’)->name(‘employee.’)->group(function(){
Auth::routes();
});
“`

“`command
php artisan route:list
“`
ここで、修正してもLaravel8を使用している方は、エラーが出ちゃうと思います。
それはルーティングの指定がLaravel7とLaravel8で
変更になったからです。

その対処法はこちら

“`php
->namespace(‘App\Http\Controllers\Emplyee’)
“`

これで、OKです!

詳しくはこちらの記事を参考にしてみてください!

https://zakkuri.life/laravel-laravel8%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%

元記事を表示

10: 多次元配列,

多次元配列

配列/連想配列の要素として格納できるのは、数値や文字列ばかりでは無い。

任意の型の値、例えば配列そのものを格納してもかまわない。

入れ子の配列

具体例

“`
$data1 = [
[‘x-1’, ‘x-2’, ‘x-3’],
[‘y-1’, ‘y-2’, ‘y-3’],
[‘z-1’, ‘x-2’, ‘x-3’],
];

“`

配列$data1

||0|1|2|
|:-:|:-:|:-:|:-:|
|0|[0,0]x-1|[0,1]x-2|[0,2]x-3|
|1|[1,0]y-1|[1,1]y-2|[1,2]y-3|
|2|[2,0]z-1|[2,1]z-2|[2,2]z-3|
上記は二次元配列

このように「配列の配列」を表すようなケースでは、最低限、要素ごとに改行とインデントを加えると構造が分かりやすくなり、コードも読みやすくなる。

構文規則ではないが、

元記事を表示

MySQLのdumpファイルをインポートすると文字化けする

# 概要
商用環境(Webシステム)をローカルに構築しように発生した問題です。
解決方法をメモとして残します。
##ローカル構築時に行った手順
1. ソースコードをローカルにコピー
1. MySQL立ち上げ(docker)
1. dumpファイルをMySQLにインポート
1. DB接続先を修正
1. 動作確認
→MySQLのデータが文字化けしてしまっている

##対応
dumpファイルのこの行を消す

~~~dump_yyyymmdd.sql
/*!50503 SET NAMES cp932 */;
~~~

##感想
商用環境がWindowsサーバーだったり、MySQLのversionがどうこうとか、ローカルがdockerだからとか、
色々想像で動いてしまったせいで解決に時間がかかりました。情けない!!

元記事を表示

時間範囲指定のバリデーション

# 概要
フォーム入力で「09:00 – 18:00」のような時間を指定する際のバリデーション

# 結論
“`
^([01][0-9]|2[0-3]):[0-5][0-9]\s-\s([01][0-9]|2[0-3]):[0-5][0-9]$
“`

# 参考
* [日付および時刻の正規表現](https://www.javadrive.jp/regex-basic/sample/index6.html#section2)

元記事を表示

9: 配列途中, 連想配列

配列 昨日の途中

“`
$data = [‘河野’, ’子安’, ’及川’, ’中辻’, ’地引’];
[0] [1] [2] [3] [4]
“`

このように配列の中身を参照しているのが上。

ブラケット([~])で括られた部分は、インデックス番号または添え字と呼ばれ、配列の何番目の要素を取り出すのかを表す。

上の例では、配列\$dataに5つの要素が格納されているので、指定できるインデックス番号は0〜4の範囲となる。

配列へのアクセス

“`
$配列名[インデックス番号]
“`

ブラケット構文を利用する事で、配列の個々の要素に値をセットすることもできる。

具体例

“`

元記事を表示

cakePHPでtinyint型を扱うときの注意事項

cakePHPではMySQLのtinyint型をboolean型として扱ってしまいます。

cakePHPではtinyintを使うな!という意見もありますが、以下のようにvirtualFieldsで型変換することにより、tinyintを「0」「1」以外で使うことができます。

以下をModel内で定義する。以下はstatusカラム(tinyint型)の例。

“`
public $virtualFields = array(
‘status’ => ‘CAST(モデル名.status as CHAR)’,
)
“`

元記事を表示

Apache + Laravelで.htaccessを弄ってもAccess-Control-Allow-Originが変わらない問題を解決

初めましての方は初めまして。けこです。

この度ちょっとしたAPIサーバを立てる運びになりまして、その際にAccess-Control-Allow-Originの設定を”*”にすることはできません。という内容のエラーに苦しめられましたので、知見を共有させていただきます。(注意:Laravel初学者です)

### 構成等
フロントエンドVue.js、バックエンドLaravel+MySQLという構成です。
フロントエンドはexample.jp、バックエンドはxxx.example.jpというドメインを取っていました。よくあるSPAってやつです。

今回苦戦したのはフロントからバックエンドのAPIサーバ(Laravel)からデータを取るリクエストをする際のAccess-Control-Allow-Origin設定です。

### どんな問題が発生したか?

ドメイン名が完全一致ではない、つまりsame-originではないのでCORS通信の設定が必要です。
今回発生したのはいくら.htaccessを弄ってもAccess-Control-Allow-Originが反映されないという問題です。

元記事を表示

Windowsにてポートを管理するサービスの一部停止

phpのlaravelプロジェクトをやり、sail upコマンドより、立ち上げたら、下記のエラーが発生しました。
理由としては、Windowsにて管理されるポート番号を使うからで、回避方法はポート番号を変更することにより、
簡単に回避はできま。
もしくは、Windowsにてポートを管理するサービスを停止する方法もありました。

“`
Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
“`

しかしながら、セキュリティー面でやりたくないと思って、探してみたら、ライブラリとして、基本提供はしていることがわかりました。
開発者がどうしても、Windowsにてポートを管理されたくない時のためですかね。(笑)

コード: https://github.com/heedaily/ExcludedPortRange

元記事を表示

Laravel9にjwt-authを追加する

# 本記事の目的
Laravel9にjwt-authを追加し、ログインからtokenを送ることでユーザー情報を取得できるまで行う。

# 環境
PHP 8.1.2
Laravel 9.1.0
PHP-Open-Source-Saver/jwt-auth 1.4.1

# 前提条件
Laravel9.0が起動できている。

![Screen Shot 2022-02-21 at 22.05.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898137/5e4750cb-4ba9-7d64-f797-ddcc825ee965.png)

# パッケージのインストール
composer requireでパッケージをインストールする。

“`
composer require php-open-source-saver/jwt-auth
“`

パッケージの構成ファイルを公開する。

“`
php artisan vendor:publish –provider=”PHPOpenSourceSa

元記事を表示

PHP cookies 更新と反映

$_COOKIEはブラウザ上に**保存された**情報を読み込む。

setcookie関数で情報を更新する際は更新される予定の情報がまだブラウザ上に**保存されていない**(これから保存される。)
よってsetcookie関数が情報を更新する際に$_COOKIEが読み込む情報はこれまでに既に保存されている更新前のcookie情報となる。
上記がsetcookie関数による情報の更新が$_COOKIEに反映されるのにワンアクション遅れる理由。

元記事を表示

【WP】記事投稿時、別のカスタム投稿を自動生成する

カスタム投稿で、記事投稿時に別のカスタム投稿記事を自動生成したかったのでwp_insert_postを使って自動化してみた。

## 環境
WordPress: 5.9
PHP:7.4
MySQL:5.7.32

## サンプルコード
// 投稿オブジェクトを作成
function add_diary(){

// 投稿オブジェクトのパーマリンクを取得
$recent = get_posts(‘post_type=diary’);
if (count($recent) > 0) {
$recent_id = $recent[0]->ID;
$recent_url = get_permalink($recent_id);
echo $recent_url;
}
// 投稿パラメータを指定
$my_post = array(
‘post_title’ => ‘「日記」を更新しました’,
‘post_type’ => ‘news’,
‘post_content’ => $recent_url,
‘pos

元記事を表示

PEAR Crypt_BlowfishをOpenSSLにリプレースする

PHP5.5から7.3へのバージョンアップ作業で、
既存サーバで使用している暗号化ライブラリがPHP7.3で非推奨の Crypt_Blowfish だったため、
推奨されている OpenSSL にリプレースする必要がありました。

# 作成した関数

まずは完成したコードから。

“`php:openssl.php
public function encrypt($plain_text)
{
// 暗号鍵の読込
$pass_phrase = ‘angoukanokagiwoiretene’;

// パディング処理
if ($m = strlen($plain_text) % 8)
{
$plain_text .= str_repeat(“\x00”, 8 – $m);
}

$encrypt = openssl_encrypt(
$plain_text,
‘bf-ecb’,

元記事を表示

VIEWからControllerに値を渡す方法~備忘録~

## viewからcontrollerに値を渡す方法

### ①formを利用する場合
#### input typeをhiddenにすることによって隠しデータとしてフォーム送信

“`
[VIEW]~~.blade.php

    

    
    


“`
“`
[Route]web.php

Route::post(‘/store’, [HomeController::class, ‘store’])->name(‘store’);
“`

“`
[Controller]Homecontroller.php

public functi

元記事を表示

ゲストOS上のApache+PHP環境にて、ソーシャルログイン(LINEログイン)してログインユーザー情報を取得してみました。

ソーシャルログイン(LINEログイン)を触ってみました。
より現実的なソースとするため、セキュリティ対策系の処理も実施しています。
本実装でLINEログイン後に返却される情報は、
ログインユーザーのユーザーID、ユーザーの表示名、プロフィール画像のURLです。
以下の通り、サーバー側はゲストOS上のApache+PHP環境です。

# 本記事の環境
ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
Google Chrome:96.0.4664.110
コマンドプロンプト
ホストOS側に実ソース
LINEログイン v2.1

# 注意事項等

* レート制限
LINEログインのAPIに対して短時間に大量のリクエストを送信し、
LINEプラットフォームの動作に影響を与えると判断された場

元記事を表示

crontabでphpが動かない時の対応

AWSのLightsailで構築したサーバ上でExmentを入れています。
特定の時間になったら通知メールを送りたかったのでExmentのマニュアルをもとにcrontabへの設定をしました。

[Exmentマニュアル:タスクスケジュール](https://exment.net/docs/#/ja/additional_task_schedule)

# 問題点
しかし時間になっても通知が来ない。。。
コマンドラインで実行する際によく使う以下の処理でもファイルにエラー内容が残っていません。
他のコマンドだと記録が残るのに。。。

https://webkaru.net/linux/redirect-output-to-file/

# 解決策
ということで結構手間取ってしまいましたが、最終的にphpへのパスの問題でした。

https://kanikuriimkorokke.com/archives/382

上記の記事をもとにprintenvした結果、phpへのパスは通っているのですが、crontab利用時はこのパスは利用しない模様。
でも対応方法はこの記事と同じでcrontab –

元記事を表示

Magento2 The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

## 環境

– PHP 7.4
– Magento 2.4

## エラー

“`
1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

Exception #0 (Magento\Framework\Exception\LocalizedException): The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

#1 Magento\Framework\App\FrontController\Intercept

元記事を表示

OTHERカテゴリの最新記事