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

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

php で headless browser chrome-php

・指定したサイトのスクリーンショットを取りたい
・スマホ用ページを取得したい
・Laravelで使う

参考

https://qiita.com/oouaioi/items/fcd157da21368dc8e5b9
https://github.com/chrome-php/chrome

# インスコ

“`
composer require chrome-php/chrome
“`

# 文字化け対策のため、centosに日本語を入れとく

“`
sudo yum install ipa-gothic-fonts ipa-pgothic-fonts
“`

# コード

“`hoge.php

use HeadlessChromium\BrowserFactory;

//略

$browserFactory = new BrowserFactory();

//ブラウザ表示サイズを指定
$browserFactory->setOptions([
‘windowSize’ => [375, 900],
]);

$browser = $browserFactor

元記事を表示

EloquentのCollectionをCSVファイルにする

# DBから取得したEloquentのCollectionをCSVファイルにしたい!

一応コードとしては掛けたのですが、もっといいCollectionの機能がありそうなので助言ありましたらお願いします…。

やり方としては各Eloquentをarrayにしてkeyをarray_valuesで配列にして、implodeで結合してます。
最後にjoinで改行でくっつけています。
注意点としては最後の `->join(“\n”)` ですが、`->join(‘\n’)` とシングルクォーテーションだと改行コードとして認識されないので必ずダブルクォーテーションにする必要があります。

“`php
$collection_string = $collection->map(function ($item, $key) {
return implode(‘,’ ,array_values($item->toArray()));
})->join(“\n”);

Storage::disk(‘example-backet’)->put(‘hoge.csv’, $collection_str

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

# Python

https://qiita.com/msssgur/items/12992fc816e6adf32cff

# Ruby

https://qiita.com/EZ_Denta/items/6489039212e21d4fc49f

# PHP

https://qiita.com/hikaru_/items/4cc7b616aa61868cdcdd

# Java

https://qiita.com/gatchan03/items/e8eecf468b7dab960198

# JavaScript

https://qiita.com/higa02/items/a7a0a1d96d1d67a7c88b

# Perl

https://perlzemi.com/blog/2011012

元記事を表示

Nuro光のIPアドレス

自宅ルーターで相手と接続を拒否するため
NuroのIPアドレスを抽出してみました。

# IPアドレス帯の抽出
AS番号からSo-netが使用しているIPアドレス帯を抽出します。
So-netは**AS2527**です。

[RIPEstat](https://stat.ripe.net/about/)
というサービスでAPIが提供されているのでこれを叩きます。

prefixの一覧が記載されたjsonをripe.jsonに保存しています。
“`
curl -m10 -s “https://stat.ripe.net/data/announced-prefixes/data.json?resource=2527&sourceapp=nitefood-asn” > ripe.json
“`

# 逆引きをしてnuroかチェック
AS番号で抽出したリストにはSo-netやnuro、逆引きできないネットワーク帯(法人向け?)など混在しています。
ネットワークアドレスに+1をしたホストIPを逆引きし、nuro.jpが含まれているものだけを抽出します。

“`php

元記事を表示

PHP ログインハッシュ化

昨日、ハッシュ化について学習したので、共有する

ハッシュ化とは、パスワードをハッシュ化し、第三者にパスワードがわからない
ようにするための方法である

今回は主にPHPのlogin時にパスワードがわからないようにするためにPHPで作成した。

コードの記入方法

vsコード中に(仮)password.php
“`php
$s = “test1”;

echo password_hash($s, PASSWORD_DEFAULT);

“`
を作成し、
URLに「localhost」→「保存ファイル名」「〜〜.php」で確認すると

「 $2y$10$XDqnwCgKg3IVqbv.cs/tkuU/RI0usl8Sa7NvVm8JU6zYp0kMNA9Py 」
のような話パスワードが確認できる。

パスワードのコピーを行い、(私は)PHP MY Adminのパスワードカラムにハッシュ化したものを貼り付けた。

loginページに移動後、「username」,「test1」を入力すると、loginその他のlogin機能の実装がうまく
行っていれば、成功すると思います。

元記事を表示

Laravel+Angular連携

## 初めに
前回「[Angularの導入](https://qiita.com/HITOSUKE/items/5efd1761cb6106cd9074)」ついての投稿よりAngularの導入方法を説明しております。
今回は、Laravel+Angular連携についてご紹介したいと思います。

### apache、PHP、MySQLのインストールは省略
firewall、SELinuxの設定も忘れずにしましょう。
ブラウザで見れない可能性があります。

# Laravel+Angular連携

Laravelに必要なものをインストールしていきます。

### [Step1]Composerインストール
①composerダウンロード
 wgetコマンドからcomposerをダウンロードしていきます。

▽コマンド
“`
wget https://getcomposer.org/installer -O composer-installer.php
“`
▽実行結果例
“`
[root@localhost ~]# wget https://getcomposer.org/inst

元記事を表示

新しいSNSを作りました。

新しいSNS「Avis」(エイビス)のβ版をローンチします。

新しいSNS「Avis」(エイビス)のβ版をローンチします。

https://avis.city/

AvisとはどういうSNSなのか

  • 利用は無料です。
  • ログインするけど書き込みは匿名で行われる「半匿名性」のSNSです。
  • SNS内の独自信用通貨(AvisCoin)で“言葉の市場”を生み出します。

![phone_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643107/85f2840b-4696-9c1a-6f66-27aa29908ad4.png)
![phone_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643107/1bc4333c-78f9-c998-71fa-9d059a1b7899.png)
![phone_3.PNG

元記事を表示

Laravel テスト用のシーダーを初回のみ実行する

Laravelのデータベーステスト時に予めデータ投入しておきたい時のtipsです。
各テストに依存するシーダーは各シーダーで実行するのが良いと思いますが、マスターデータ等システム全般で使用するものはテスト前に実行しておきたいです。

## 事前情報

`tests/TestCase.php` はLaravelが元々用意してくれているファイルです。
`TestCase` を継承して各テストクラスを作っていきます。

“`php:tests/TestCase.php

元記事を表示

Ubuntuのapache2.4でmpmをeventに変更する

# 概要
Apacheのmpm(Multi Processing Module)をデフォルトのpreforkではなくeventに変えてマルチスレッド化しようとしたときにハマったので備忘録として残しておきます。

# 環境
– OS: Ubuntu 20.04.4 LTS x86_64
– apache: 2.4.41
– php: 7.4.3

# phpについて
普通のphpだとmpmがpreforkに依存するので、php-fpmというものを導入します。
php-fpmの説明は割愛します。

“`shell
sudo apt install php-fpm
sudo a2dismod php7.4
sudo a2enmod proxy_fcgi
sudo systemctl restart apache2
“`
これでfpm版のphpが動きます。

# mpmの変更
“`
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
“`
以上です。
使用中のmpm等は`apac

元記事を表示

Mattermot APIのPHPドライバを Laravel で実行する手順

# 概要
[Mattermost API](https://api.mattermost.com/) には、以下のドライバ群がありますが、ここでは PHP Driver を Laravel 上で実行する手順を整理したいと思います。

* Official Drivers
* [Mattermost JavaScript Driver](https://github.com/mattermost/mattermost-redux/blob/master/src/client/client4.ts)
* [Mattermost Golang Driver](https://github.com/mattermost/mattermost-server/blob/master/model/client4.go)
* Community-built Drivers
* [PHP Driver](https://github.com/gnello/php-mattermost-driver) – built by @gnello and @prixone
* [Python Dr

元記事を表示

PHP フォルダ 削除関数

### 完成イメージ図
![tttt0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478380/9f829c82-5a24-4af7-1fec-ae2e9e0b2457.png)

### ソースコード

“`PHP:
//*********************** */
//**************** DB カラム 削除 関数 */
//*********************** */
function DB_delete_column($p_h) {

// *** エックスサーバー用 接続情報
$dsn = ‘mysql:dbname=サーバー;host=localhost;port=3306’;
$user = ”;
$password = ”;

try{

// PDO オブジェクト作成
$pdo =

元記事を表示

【Laravel】シーダーファイルで投稿時刻と更新時刻を出したい

`php artisan db:seed –class=PostsTableSeeder`したら怒られた。

# 開発環境

MySQL 5.7.38
PHP 7.3.33
Laravel 6.20.44

# エラー文

“`:Terminal
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value
: ‘1658634263’ for column ‘created_at’ at row 1
(SQL: insert into `posts` (`user_id`, `title`, `body`, `created_at`, `updated_at`)
values (2, title1, body1, 1658634263, 1658634263))
“`

# 何が起こっている?

時間の型が違う。
当初、シーダーファイルでは
“`:PoststableSeeder.php
‘created_at’ => time(),
‘updated_at’ => time()
“`

元記事を表示

PHP POSTとGET送信方法について

今回はGET送信方法とPOST送信方法が別々なので、送信方法についてそれぞれ書いて行く。

POST送信を使う場合
“`php
//main.php

“>

“`

“`php
//edit.php
if(isset($_POST[“id”])){ //変数に値が入っているかどうかを確認するためのisset関数
$id = $_POST[“id”];
}
“`

POST送信の場合は
postの意味の中に 「(時間的に) ~の後の」と言う意味があり、
formで送ったものを「POST」で受け取る時に使用する。

GET送信を使う場合
“`php
//main.php
Laravel 9.x ルーティングの解説

## ルーティングとは

LaravelのルーティングはHTTPリクエストのパスや内容に対応するコントローラに処理を渡す役目をします。

## 公式ドキュメント

https://readouble.com/laravel/9.x/ja/routing.html

## ディレクトリ構成

ルーティングファイルは `routes` ディレクトリの中にいくつかあります。

|ファイル|説明|
|—|—|
|api.php|APIのルーティング|
|channels.php|ブロードキャストチャンネルのルーティング|
|console.php|コンソールのルーティング|
|web.php|一般のWebページのルーティング|

主に利用するのは `web.php` または `api.php` になるかと思います。
LaravelをJSONで返すAPIとして利用する場合は `api.php` に書いていくことになります。

## ビューを表示する

### 基本

“`php:routes/web.php
Route::get(‘/’, function () {
retur

元記事を表示

AWS S3に画像をアップロードできない

# はじめに
PHP Laravelを使ってwebアプリを開発しようとしてたところAWS S3に画像をpublicで保存をしようとしたところエラーが出てきてしまいました。
S3の設定の方で変更をすることで直すことが出来たので、そちらの方法を説明いたします。

# AWS S3に画像をアップロード(エラー)
LaravelのControllerに以下のコードで保存をします。
“`
public function store(PlanRequest $request, Plan $plan) {
$input = $request[‘plan’];
$input += [‘user_id’ => $request->user()->id];
$image = $request->file(‘image’);
// S3に画像を保存
$path = Storage::disk(‘s3’)->putFile(‘/’, $image, ‘public’);
$input += [‘image’ =

元記事を表示

Laravelのデバッグ方法について

#### Laravelのデバッグ方法について

#### ddヘルパーを使って、値を出力する

Laravelでもvar_dumpを使うことができますが、もっと見やすく出力できるddヘルパーというものが用意されています。

“`
dd($hogo)
“`

ddヘルパーに変数を渡して値を出力する

#### loggerヘルパーを使って、ログを出力する

loggerヘルパーを使うと簡単にログを出力することができます。

これを使うと、ファイルに出力してくれるので、こちらもデバッグや変数の内容を確認したい時には使うことができます。

“`
logger($hoge)
“`

渡す引数はddヘルパーと同じで、クラスのインスタンス変数でも文字列でも大丈夫です。

storage/logs/laravel.logにログが出力されます。

storage/logs/laravel.logファイルについては、Laravelでエラーが出た時にもログが出力されるので解決する時に役に立ちます。

ログ出力する際には、他にも下記のようなメソッドが使用できるようになっています。

ログ出力する時

元記事を表示

php-html-parser で スクレイピング

スクレイピングしたい
php-html-parser がいいらしい。
embedというライブラリを使ったがヘッダを抜き出すのは良いが本文を抜き出すのは弱そう。

参考
https://www.utakata.work/entry/php/webscraping-with-php-html-parser

# インスコ♡

“`
composer require paquettg/php-html-parser
“`

おや?依存性エラー?
(関連も一気にアップデートする -w コマンドを使う)

“`
composer require paquettg/php-html-parser -w
“`

`OK`

# それでは、ヤフーニュースから タイトル と リンク を抜き出してみよう

“`hoge.php
$options = new Options();
// $options->setEnforceEncoding(‘utf8’);

$url = ‘https://news.yahoo.co.jp/search?ei=UTF-8&p=%E5%A9%9

元記事を表示

PHP デバック方法 var_dump

## はじめに

PHPのデバックに必ず使うといってもいいような方法とちょっとした工夫もつけくわえます。

## var_dump使ってみる

“`

“`
ブラウザで結果はこんな感じで返ってきます。
array(4) { [0]=> string(5) “apple” [1]=> string(6) “orange” [2]=> string(5) “Grape” [3]=> string(5) “melon” }

“`
‘;//ここを追加 var_dump($array); echo ‘

‘;//ここを追加
?>
“`

これをつけると

“`
array(4) {
[0]=>
string(5) “apple”
[1]=>
string(6) “o

元記事を表示

PHP削除機能実装方法

PhPの削除機能が実装できたため、備忘録として説明する。

前提として、削除ボタンの所に〜phpwo

①DBベース接続する
②ゲットデータを取得する
③SQLにデータ登録する
③値をセットをする
④SQLの実行をする
⑤データ登録後の処理をする

“`php

//①DBベース接続
$pdo = new PDO(“mysql:charset={$char_set};dbname={$db};host={$host}”, $user, $password);

// ②新規作成 start このページにアクセスしたら、
// ゲットデータを取得する。
if(isset($_GET[“id”])){ //変数に値が入っているかどうかを確認するためのisset関数
$id = $_GET[“id”]; //main.phpで入れた内容が入ってくる。

try {//try〜catchすることができる。
//途中で何かしらのエラーが起こしたら、その場で処理が止まって、catchより以下がエラーで返却される。
//catchされず、滞りな

元記事を表示

正規表現:曖昧なパターンはエンジンによって動作が変わる(教訓)

検索してどういうことなのか調査してみようとしたのですが、上手に検索できませんでした…。
検索しても全然それっぽい情報が出てこない!
のでとりあえず記事にしてみます。

もし原因をご存じの方いましたらお教えいただけると嬉しいです…!

# 環境
– グループ1(JavaScript系)
– JavaScript (Firefox 104.0.2)
– JavaScript (Google Chrome 105.0.5195.127)
– グループ2(Perl系など)
– PCRE (PHP 7.3.11 & PCRE 10.32 2018-09-10: [RegExr.com](https://regexr.com/))
– Python 3.10 (re モジュール)
– コメントに頂いた検証:Ruby 3.1.2 (Onigmo)
– コメントに頂いた検証:CotEditor 4.3.4 (ICU)

PCREは「PCRE ライブラリは、Perl 5 と同じ文法構文を用いた 正規表現パターンマッチ処理を実装した関数群ですが、多少異なる点もあります (以下を

元記事を表示

OTHERカテゴリの最新記事