PHP関連のことを調べてみた2021年11月19日

PHP関連のことを調べてみた2021年11月19日

PHPでSSL証明書期限を監視する処理を作ってみた

PHPでSSL証明書期限を監視してChatWorkに通知する方法を紹介します!

## やり方

“`
/dev/null | openssl x509 -noout -e

元記事を表示

仮想環境上のLaravelプロジェクトでmigrationが実行できない。

## やりたいこと

– 仮想環境上(vagrantとvirtualbox)のLaravelで「php artisan migrate」を実行したい

## エラー内容

“`bash
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = laravel-quest and table_name = migrations and table_type = ‘BASE TABLE’)
“`

“`bash
at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attemp

元記事を表示

PHPのfile_get_contents()でプロキシを指定する

PHPのfile_get_contents()でプロキシを設定する方法。

“`php:コード
$proxy = array(
‘http’ => array(
‘proxy’ => ‘プロキシサーバーのホスト:プロキシサーバーのポート’,
‘request_fulluri’ => true,
),
);
$proxy_context = stream_context_create($proxy);
return file_get_contents(‘https://qiita.com’, false, $proxy_context);
“`

元記事を表示

PHPフレームワークLaravel入門第2版(通称:青本)『掌田津耶乃・著』Chapter5でSQLiteではなくMySQL(MariaDB)で環境構築する際のエラー対処方法

## はじめに
こんにちは、[@kazuma_dev](https://twitter.com/kazuma_dev)です。
PHPフレームワークLaravel入門第2版(通称:青本)『掌田津耶乃・著』Chapter5でSQLiteではなくMySQL(MariaDB)で環境構築した際のエラー対処方法です。
レビューを見る限り、chapter5の環境構築でつまづく方が多かったので下記に記します。

## 前提・実現したいこと
– Laravel6系とMySQL(MariaDB)の接続

## 発生している問題・エラーメッセージ
“`
sqlstate[hy000] [1045] access denied for user ‘root’@’localhost’ (using password: no)
“`

## 該当のソースコード

– 公式サイトのサンプルファイルにあるテストコードは下記の通りです。書籍の通り進めていくとSQLiteを使用するため、下記のコードになるかと思います。

“` /Applications/MAMP/htdocs/laravelapp/config/

元記事を表示

windowsでマルチPHPを実現する

###PHPをダウンロードし、任意のディレクトリにダウンロード
https://windows.php.net/downloads/releases/archives/

ここでは`/c/php/php-7.1.17-nts-Win32-VC14-x64`

###環境変数に下記を追加

“` C:\php “`

###PHPのエイリアスを作成

####git-bash用
“`vi /c/php/php“`

“`PHP
#!/usr/bin/bash
“/c/php/php-7.1.17-nts-Win32-VC14-x64/php.exe” $*
“`

#### cmd用

“`vi /c/php/php.bat“`

“`PHP
@echo off
“C:\php\php-7.1.17-nts-Win32-VC14-x64/php.exe” %*

“`

“`vi ~/.bash_profile“`

“`PHP
#alias php=’/c/php/php-7.3.31-nts-Win32-VC15-x64/php’
alias php=’/c

元記事を表示

PHPで日本の休日付きカレンダーを作る

#CarbonとYasumiを使います

CarbonはLaravelに入ってるので直観的に扱える人は多いかなと。

##インストール
composerで導入します。
###Carbon
https://qiita.com/hiroita/items/ed642b6acac4cef45bda

###Yasumi
https://qiita.com/sola-msr/items/7901835b3bfe145de033

#サンプル
以下のようなDirで配置

“`
html/index.php
html/vender/…
“`

サンプルコード(折り畳み)

“`php:index.php

元記事を表示

【PHP】Google広告APIでオフラインコンバージョンを自動アップロードしたい!

#はじめに

以前YahooAPIでオフラインコンバージョンを自動でアップロードする方法について、
調べて[記事](https://qiita.com/azasaz/items/20e49936471c4dd5ecb6)にしたんですけど、それじゃGoogleは?というおはなし。

#そもそもオフラインコンバージョンてなんぞや。

Googleさんが広告タグに「gclid」という長い文字列をくっつけてくれるので、
コンバージョンに結びついたデータからそのIDを引っこ抜いて、
ついでに何時何分何秒にいくらでコンバージョンに至ったかの情報を
まるっと渡すと、GoogleさんがAIを駆使して分析してより細分化された広告設定ができるようになる。らしい。

(とは担当者談なので、実際のところよく知らないんだけど)

オフラインコンバージョンについての詳細は[ココ](https://anagrams.jp/blog/listing_knowhow/offline-conversion-tracking-for-google-ads/)がわかりやすい

※ちなみにYahooの場合は「yclid」という

元記事を表示

Laravel:パスワードリセット実装の仕方

プログラミング初心者です。

##やりたいこと
LaravelのAuthをインストールすると、“`Forgot your Password?“`という名前でパスワードリセット機能が実装されます。
ただそのままだとメール送信することができず、エラー表示がでました。そこから実装に成功したので、ここに記録します。

日本語やデザイン変更してしまってますが、パスワードリセット部分の写真です。
![スクリーンショット 2021-11-17 1.08.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1362518/bc40309c-6473-4183-fa6a-03e6d482adfb.png)

##1 まずエラー①
何も自分で実装してなかったのでそのままメール送信すると以下のエラーが出ました。

“`
Call to undefined method App\User::notify()
“`
###1-1 エラー①解決方法
①Notificationsディレクターに一つもファイル作成してなかった

元記事を表示

【Laravel】App Store Connect API からiOSアプリの売上レポートを取得する

# はじめに

自分で作ったiOSアプリのダウンロード数などが知りたい場合、以下の2つの方法で確認することができます。

1. App Store Connectにアクセスし、ブラウザ上で可視化された情報を確認する
1. App Store Connect API を叩き、データとして取得する

本記事では、iOSアプリの新規ダウンロード数を算出することを想定し、2番のApp Store Connect API経由でSales and Trendsレポートを取得する方法を紹介します。

# 準備

※ Laravelのプロジェクトが立ち上げ済みであることを前提に話を進めます

## JWT生成ライブラリのインストール
App Store Connect API の認証には、__JWT__(Json Web Token)が必要となります。
今回はLaravelでの実装のため、PHPでJWTを生成できるライブラリである`PHP-JWT`を使用します。(https://github.com/firebase/php-jwt)

上記リンクのREADMEにもあるように、composerでインス

元記事を表示

BotUIでチャットボット開発(ツール編)

## はじめに

以下2つの記事の続きです。

* [BotUIを使ってチャットボットを開発してみた](https://qiita.com/t_power/items/e966b4a5f35340ed9a41)
* [BotUIでチャットボット開発(DB編)](https://qiita.com/t_power/items/aac7cc0e34736e557a0a)

本記事では、DBのデータをメンテナンスするためのツールを開発した話を扱います。

## ツールの概要

![ツールの概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1998725/643ab6c7-c56d-51b0-7883-150ef313da63.png)

上記の手順で管理することにより、プログラミングの知識が全くない方でも、シナリオを変更できるようになりました。
また、担当者が改行を含むデータを扱いやすくするために、CSVファイルはExcelで編集する運用にしました。

**実際のシナリオ管理ページのキャプチャ**
![シナ

元記事を表示

git commit できず苦戦(Controller.phpにActionを追加しただけ)

# はじめに
<自己紹介>
こんにちは、この記事が初投稿になります。
某SES企業に所属しています。現在は、非ITのクライアントに常駐しながら開発案件を目指して日々奮闘中です!
日々の学習のアウトプットのために活用させていただきます。

# <エラー概要>
◉Laravel学習初日
Admin/ProfileControllerに、add、create、edit、updateそれぞれのActionを追加しターミナル上でgit commitを入力したが

:::note warn
” On branch master Initial commit nothing to commit ”
:::
と出力されうまく実行できない。

#<仮説/試したこと>

◉ masterブランチ上で操作しているのでブランチを切ってくださいと怒られている
→ブランチを一度削除しやり直し
◉ そもそも指定しているディレクトリが違う
→確認、問題なし。
◉ VScodeとの接続がうまくできていない
→“`git add/git remote -v“` で確認、問題なし

あらゆることを試しましたが全然うまく

元記事を表示

いまさら聞けないPHP関数(Math編)

# はじめに
今まで触れてきたMath関連の関数です。
随時追記予定。

# rand(int $min, int $max)
乱数を生成する

– パラメータ
$min = 生成される乱数の最小値

$max = 生成される乱数の最大値

– 戻り値
生成した乱数

“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`

元記事を表示

いまさら聞けないPHP関数(その他)

# はじめに
今まで触れてきたその他関連の関数です。
随時追記予定。

# [uniqid(string $prefix, bool $more_entropy)](https://www.php.net/manual/ja/function.uniqid.php)
一意なIDを生成する

– パラメータ
$prefix = 設定したい接頭語

$more_entropy = 末尾にエントロピーを追加するかどうか

– 戻り値
生成したID

“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`

元記事を表示

いまさら聞けないPHP関数(Hash編)

# はじめに
今まで触れてきたHash関連の関数です。
随時追記予定。

# [hash_hmac(string $algo, string $data, string $key, bool $binary)](https://www.php.net/manual/ja/function.hash-hmac.php)
HMAC方式を使用して、ハッシュ値を生成する

– パラメータ
$alge = 指定したいアルゴリズム名

$data = ハッシュ値にする文字列

$key = 共有の秘密鍵

$binary = trueの場合は生のbinaryデータ、falseの場合は小文字の16進数値

– 戻り値
生成されたハッシュ値

“`PHP
$ip = $_SERVER[‘REMOTE_ADDR’];
$sessionId = hash_hmac(‘sha256’, $ip.uniqid(rand(), true).$_SERVER[“SERVER_NAME”], false);
“`

元記事を表示

いまさら聞けないPHP関数(セッション編)

# はじめに
今まで触れてきたセッション関連の関数です。
随時追記予定。

# [session_status()](https://www.php.net/manual/ja/function.session-status.php)
セッションの状態を確認する

– 戻り値

| 戻り値 | 意味 |
| —- | —- |
| PHP_SESSION_DISABLE | セッションが無効 |
| PHP_SESSION_NONE | セッションが有効だが存在しない |
| PHP_SESSION_ACTIVE | セッションが有効で存在する |

“`PHP
if(session_status() === PHP_SESSION_NONE) {
session_name(‘token’);
session_st

元記事を表示

AWS EC2にてPHPのRedis拡張機能を有効化する。

PHPのREDIS拡張機能を追加する。

手順はシンプル
・インストール
・有効化

**※以下、インストール**
インストールにはpeclを利用する。

## peclインストール

“`
wget http://pear.php.net/go-pear.phar
php go-pear.phar
“`

インストール時にオプション指定をいくつか設定できるが、
筆者はデフォルト設定にしたためEnterを押した。

## PATHの追加
“`
export PATH=$PATH:/home/ec2-user/pear/bin
“`

## redisのインストール
“`
sudo pecl install redis
“`

**※以下、有効化**
## php.iniに以下を追加
“`
extension=redis.so
“`

## Apache再起動
“`
sudo service httpd restart
“`

# 参考
https://pear.php.net/manual/en/installation.getting.php
https://se

元記事を表示

【PHP】チャット機能の自作!Ajaxでスムーズな更新も実現

PHPで作れる定番機能の1つ「チャット機能」を自作してみました。

完成までの流れと苦労したポイント、どんなふうに作っていったかをまとめてみました。

#チャット機能を自作

今回使ってみたのはこのような感じのチャットです。
[自作チャット](https://portfolio.amefure.com/chatsystem/chat.php#chat-area)

チャット機能を作ることができればPHPのあらかたのテクニックが学習できるかなと思い、作成することにしました。

##要件定義

まず最初にチャットを実現するために必要な機能を洗い出します。

チャットで欲しい機能
– チャットを送信時に時間とアイコンを表示
– チャットログを蓄積、表示
– チャットログが増えたら自動更新
– デモなのでユーザー切り替え
– チャットログリセット

必要になる言語
– HTML/CSS(元枠)
– PHP(データ操作)
– JavaScript(自動更新)

##設計

実現方法
– ログはJSONファイルに格納
– ログが増えたかどうかはファイルサイズで判断
– ajaxを使って更新時の

元記事を表示

Docker環境でDBに接続するとcould not find driverが出たときの対処方法

## DBに接続する処理を作成
“`php
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false
]
);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
“`
## 接続すると下記のエラーが出力された
“`bash
could not find driver
“`
### ドライバが見つからないようなので現在のドライバ

元記事を表示

【PHP】時間帯が重複しているかをチェックする

## どんなときつかうか
予約システムつくるとき、よく使う。例えば予約したい時間帯に**「空きがあるがどうか」**を調べたいときなど。

### 重複している時間帯をチェックするプログラム

“`index.php
// 予約したい時間帯
$reserveStartDate = ‘2021-10-21 14:00’;
$reserveEndDate = ‘2021-10-21 15:00’;

// 予約ができないorうまっている時間帯
$fullSinceDate = ‘2021-10-21 14:30’;
$fullUntillDate = ‘2021-10-21 15:30’;

// invertは間隔が負の数になっている場合は1、正の数なら0を返す
$is_duplication = isTimeDuplication($reserveStartDate,$reserveEndDate,$fullSinceDate,$fullUntillDate);
if($is_duplication){
print_r(‘重複しています。空きがありません’);
}
else {

元記事を表示

PHPからSQLに接続する

記録用

##準備
###DBに接続する

読み込めば接続できるファイルを作っておく

“`php:dbh.php
false, // 静的プレースホルダにする //セキュリティの強化
\PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, // 複文を禁

元記事を表示

OTHERカテゴリの最新記事