PHP関連のことを調べてみた

PHP関連のことを調べてみた

apacheが動かなくなったときの1つの原因

# はじめに
こんにちは。
今回は、私が遭遇したapacheが動かなくなってしまった際の1つの原因について解説します。

# apachectl start してみるも

“`
httpd: Syntax error on line 191 of
/usr/local/apache2/conf/httpd.conf:
Cannot load modules/libphp.so into server:
dlopen(/usr/local/apache2/modules/libphp.so, 0x000A):
Library not loaded: /usr/local/opt/libsodium/lib/libsodium.23.dylib\n
Referenced from: <英数字の羅列>
/usr/local/apache2/modules/libphp.so\n
Reason: tried: ‘/usr/local/apache2/lib/libsodium.23.dylib’ (no such file),
‘/usr/local/opt/libsodi

元記事を表示

Laravel9でWebスクレイピングしてみた

## はじめに
今回、聞いたことあるけど実際触ったことのなかったWebスクレイピングをやってみようということで、LaravelでWebスクレイピングを試してみることにしました。

内容は何でも良かったのですが、
Pubmedという論文サイトがありまして、それをWebスクレイピングすることにしました。

### Webスクレイピングとは
> Webスクレイピングとは、Webサイトから特定の情報を自動的に抽出するコンピュータソフトウェア技術のことです。Webスクレイピングを使えば、インターネット上に存在するWebサイトやデータベースを探り、大量のデータの中から特定のデータのみを抽出させることができます。
> Webサイト上のデータを移す際は、手作業でコピー&ペーストを行う方も多いでしょう。しかし、Webスクレイピングの活用によって、面倒な手作業を自動化できるため、作業時間の短縮や転記ミス防止が可能です。 抽出したデータはExcelやCSVファイルなどにエクスポートできるため、データを活用した分析が行えるようになります。

とのことです。
実際にWebに転がっている大量のデータから、必要なデ

元記事を表示

FileファサードのallFilesメソッドは隠しファイルを取得するかどうかを指定できる

ディレクトリのファイルパス一覧を取得しようとしたときに、どうしてもあるファイルパスのみ取得できなかったので、調べてみました。
ドキュメントが不十分で分かりにくかったので、備忘録のため書き残します。

# 目次
– [allFilesメソッドについて](#allFilesメソッドについて)
– [allFilesメソッドの引数について](#allFilesメソッドの引数について)
– [内部実装について](#内部実装について)

## allFilesメソッドについて
「与えられたディレクトリからすべてのファイルを取得する(再帰的に)」メソッドです。
つまり、引数で渡したディレクトリのサブディレクトリまで全部ファイルパスを取ってくるよというメソッドです。
https://laravel.com/api/10.x/Illuminate/Filesystem/Filesystem.html#method_allFiles

## allFilesメソッドの引数について
第1引数は、ディレクトリのパスをstringで渡します。
第2引数は、ドットから始まる隠しファイルまでパスを返すかどうかをb

元記事を表示

サブディレクトリ型の多言語サイトにおける言語切り替え時の遷移先URIの設定

## 問題状況
 同一のドメインで日本語のサイトを運営しているが、サブディレクトリ型で複数の言語に対応したサイトを構築することになった。ヘッダーには言語切替のボタンを設置したが、これがクリックされた時に同じ内容のページに遷移させたい。

 例えば、日本語、英語(English: en)、フランス語(français: fr)、中国語(中文: zh)に対応したWebサイトのTOPは、それぞれ、

– `https://www.mysite.com/`
– `https://www.mysite.com/en/`
– `https://www.mysite.com/fr/`
– `https://www.mysite.com/zh/`

であり、それぞれの「ごあいさつ」や「会社情報」に相当するABOUT USのアドレスは、
– `https://www.mysite.com/aboutus/`
– `https://www.mysite.com/en/aboutus/`
– `https://www.mysite.com/fr/aboutus/`
– `https://ww

元記事を表示

WordPress でサムネイル画像の自動生成に Intervention Image 2 を使ってみた

# 概要
PHP の画像処理ライブラリである [Intervention Image](https://image.intervention.io/v2) のバージョン2を WordPress で使う方法について調べてみました。

WordPress で某サイトの画像一覧を作成中なのですが、元画像( 400KB 程度)が 50 ファイルもあると 1ページの転送量が 10MB をゆうに超えてしまうので、元画像から動的にサムネイルを自動生成してくれる、ちょうど Apache/Nginx の small_light のような機能が欲しいなぁ~とググってみました。環境がレンタルサーバですので、当然モジュールの追加などはできず。

Laravel の Intervention Image がよさげでこれを WordPress プラグインで使えないか探してみたところ、以下のプラグインが見つかりました。

https://github.com/getdave/wp-intervention

# プラグインのインストール
ソースを見ても、まんま Laravel ライブラリで WordPress プラ

元記事を表示

引数、戻り値とは?関数について理解が足りないので勉強してみた

関数についてあまり理解できていなかったので、
引数、戻り値について調べた備忘録です。

下記を参考にしました。

引数、戻り値とは?【分かりやすい解説シリーズ #7】【プログラミング】

“`
引数(パラメータ)=材料
戻り値(返り値)=結果
“`
関数は、各言語で用意されているものもあるし、自作することもできるもの

“`
材料をいれると

処理されて

結果が出てくる
“`

例えば、大根電動おろし器があったとする
“`
大根を処理機に入れて

おろし処理され

すりおろされた、大根おろしがでてくる
“`
プログラミングの考えに戻すと
“`
引数

関数

戻り値
“`

## 実際の処理(phpの場合)関数の定義
“`php
function 関数名(引数){
行う処理;
return 戻り値;
}
“`
## 簡単な実例
“`php
function colc ($num1,$num2){
// 引数1と引数2を足して$totalに入れる
$

元記事を表示

php.iniファイルが作成できない(Mac)

あるPHP講座でphp.iniファイルの作成をするところで沼ってしまったので、備忘録として対処法を書いておきます。


– ### やりたかったこと
**php.ini(PHPの環境設定ができるファイル)をターミナルで作成したい。**

動作環境はMacです。
Macに標準搭載されたPHPにはphp.iniファイルが作成されていないため、“/etc/php.ini.default“を“sudo cpコマンド“でコピーしてやります。
念のためまずは、“lsコマンド“でphp.iniファイルが作成されていないことを確認しました。
“`
$ ls /etc/php.ini
ls: /etc/php.ini: No such file or directory
“`
↑No such fileと出ていれば大丈夫です。

:::note warn
/etcフォルダ以下の編集では管理者権限が必要なので“sudoコマンド“を使います。
:::

– ### 問題点
**php.iniファイルが作成できない!**

“cpコマンド“に2つの引数(コピー元・コ

元記事を表示

【初参加】カンファレンス参加はいいぞ【PHPカンファレンス】

# はじめに
どうもこんにちは、イトイ(@Itoi)です。

エンジニアになって1年半、ずっと憧れていたことがありました。
それは「**大きなエンジニアイベントに行ってみたい!**」というミーハーな内容です。

昨年はAWSのイベントやRubyKaigiもありましたが、どうしても都合がつかず…
そんな私に待望のイベントがありました。

それは **PHPカンファレンス関西2024**!!(2024/02/11(日) 開催)
こちらに参加してきました!

PHPカンファレンスは思っていた以上に楽しく、実りある経験となりました。

この記事で、カンファレンス未体験の方に私が感じた魅力を少しでも伝えられればと思います。
(そして参加者が増え、カンファレンス文化がもっと盛り上がりますように!)

## 魅力1 ノベルティがもらえる
いきなり現金な内容です笑
多くのカンファレンスでノベルティがもらえると思います。
今回はトートバッグに色々入っていて、中を見るのがワクワクしました。

もう1点、参加景品として、参加者のアイコンを載せたトレーディングシールを配っていました。
持っている方は名刺がわり

元記事を表示

postされた日付をexplode関数で区切りcheckdate関数でバリデーション

postされた日付などをcheckdate関数を使用してバリデーションを行いたい時にexplode関数を使います。
## 使ってみる
checkdate関数は引数1に月、引数2に日、引数3に年を渡さなければいけません。なので、explode関数を使用してcheckdate関数に合う形にします。
“`php
$date = $_POST[‘date’]; //’2024-02-12’が入っている
$array_date = explode(‘-‘, $date);
“`
引数1に何事に区切るか(上記では-)、引数2に区切りたい文字列が入った変数を指定します。
var_dumpで出力して確認していきます。
“`
array(3) { [0]=> string(4) “2024” [1]=> string(1) “2” [2]=> string(2) “12” }
“`

## checkdate関数で正しい日付かチェック
checkdate関数で正しい日付化チェックしていきます。先ほど書いたようにcheckdate関数は引数1に月、引数2に日、引数3に年を渡さなければいけません。

元記事を表示

AWS Amazon LinuxでWordPressを立てた時にカスタムパーマリンクが機能しない時の対処法

## この記事について
[前回の記事](https://qiita.com/yabish/items/fff120b622d723f0e7ce)の執筆後にWordPressのパーマリンクを変更すると「更新に失敗しました。返答が正しいJSONレスポンスではありません。」とのエラー…
WordPressを初めて触っていたこともあり、何が原因かわからないエラー文に悪戦苦闘しましたが、なんとなく状況が理解できてきたので得られた知見をまとめました。
おそらく、[really simple ssl](https://ja.wordpress.org/plugins/really-simple-ssl/)のプラグインが悪さしているのでしょうが…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412378/6d8437be-28f8-ba4f-b001-4b73259b1016.png)

## 問題が発生した状況
AWSのアーキテクチャ:[前回の記事](https://qiita.com/

元記事を表示

PHPカンファレンス関西2024に行ってきました

# はじめに
– 昨日[PHPカンファレンス関西2024](https://2024.kphpug.jp/)に行ってきました。
– 弊社はゴールドスポンサーとして協賛しており、バッグやパンフレットに大きくロゴを入れていただきました!

– 私もスポンサー枠で参加させてもらったので、拝聴したセッションごとに内容と感想を書いて行きます。

# Laravelでミニマム開発からスタートして個人サービスを利益化するまでの経験談!
– https://fortee.

元記事を表示

[Laravel / Fortify] 認証処理を可視化、カスタマイズしよう!

**プロフィール**
* 私立文系大学3年
* プログラミング歴は1年1か月
* Laravel / javascript を主に使用
* 現在は React を学習中
* 最近友人にもらった日向坂・上村ひなの写真集を見て、少しハマりそう

## Laravel / Fortifyについて
Laravelの認証パッケージには複数の種類がありますが、私は以下の2つの使用経験があります。
1. Laravel / ui
1. Fortify

私がLaravelの学習を始めるにあたり、以下の書籍を購入し学習しました。
おそらく最もメジャーな書籍だと思われます。
[PHPフレームワーク Laravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF-Laravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83-ebook/d

元記事を表示

【Drupal】PHP構成の設定

## はじめに
DrupalのPHP構成の確認画面をご存知ですか?
こちらのパスから確認することができます。
“/admin/reports/status/php“

![PHP構成確認画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334980/576d9a60-85ba-d54b-f512-3c2695263f62.png)

通常であればインスタンスやコンテナの設定でPHP構成の管理を巻き取ることが多いのかなと思います。

ただ、
「本番環境・テスト環境ではメモリの制限それぞれ設定したい」
「開発環境ではメモリをフルに使いたい」
ってこと結構ありますよね。

**(環境変数を使えば簡単にできるよって意見もあるかと思いますが…)**

今回は、アプリ側でのPHP構成の変更方法をご紹介します。

## 設定場所
設定場所はなんと!
Drupal標準で用意されています。

### Drupal標準..?
軽くissueを調べてみましたが、恐らく“settings.php“ or “sett

元記事を表示

PHPカンファレンス 関西 2024

先日、PHPカンファレンス関西に行ってきましたので、体験談を記録します。

# PHPカンファレンス関西とは
PHPカンファレンス関西は、PHPエンジニア(:PHPer)がPHPやPHP周辺の技術的知識やノウハウ、体験を共有するための大規模技術カンファレンスです。
今年は2018年から6年ぶりの開催になります。

# 参加したセッション
– [レガシーシステムへのPHPStan導入から半年での課題と効果](https://fortee.jp/phpcon-kansai2024/proposal/10c6f1ac-ec4b-4895-8db7-39b9a13c84bb)
– [RDBアンチパターンと戦う – 削除フラグ完全攻略ガイド](https://fortee.jp/phpcon-kansai2024/proposal/4e03491c-2a97-40aa-8ff9-a68593b0e847)
– [アプリケーションエンジニアこそ「監視」だよね!と私が考える訳](https://fortee.jp/phpcon-kansai2024/proposal/42712995-5f3e-4c

元記事を表示

【PHP】マイナーフレームワーク「Flow」を試してみる~セッション編~

# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/e98f25bec6cc067f24a4)の記事でFlowにおけるキャッシュの扱い方について解説しました。今回はセッションの扱いについて解説していきます。

# セッションの扱い方
セッションによくある「ECサイトの商品カゴ」の例で説明します。

まずは、セッションで扱いたい情報のクラスを用意しましょう。
以下のようなカゴEntityを作成しました。

“`php

/**
* @Flow\Scope(“session”)
*/
class CartEntity {

/**
* @var array
*/
protected $items = array();

/**
* @param string $item
* @return void
* @Flow\Session(autoStart = true)
*/
public function addItem($item) {

元記事を表示

【PHP】PHPで使うfor文って何?

## for文って何?
同じ動作を繰り返し行う場合には、ループ処理がよく使われます。
ループ処理を使用することにより、コードがシンプルになり作業効率が向上します。
そのループ処理を行う文の1つがfor文です。
for文は繰り返す回数が決まっているときに使用します。

### どう記述するの?
“`php:for文
for (式1; 式2; 式3){
//ここに処理を書く
}
“`
0から5までの数字を表示させる場合
“`
for ($i = 0; $i < 6; $i++){ echo $i; } ``` ① **$i =0 ;** ここでは、式1を0で設定します。 ② **$i < 6;** ここでは、式2で$iが6より小さい間繰り返す指示をしています。 ③ **$i++;** ここでは、式3に処理を1回するたびに初期値に+1する指示を出しています。 ④ **echo $i;** ここでは、処理を1回するたびに$iを出力する指示を出しています。 echoした結果 012345 が表示されます。 ### 2つのfor文を連動させる、2重ループ f

元記事を表示

PHP入門 ~データベース接続~

# PDOとは
「PHP Data Objects」の略で、PHPから簡単にDBにアクセスするための拡張モジュールです。データベースの種類やバージョンの違いを気にせずコードを書くことができます。

# データベースに接続
PDOオブジェクトのインスタンスを作成します。以下の例では、変数$pdoに代入しています。
“`php
$pdo = new PDO($dsn, $username, $password, $options);
“`
4つの引数を渡していて、説明は以下の通りです。
* $dsn…データベースに接続するための必要な情報
`dbname`はデータベース名を指定
`host`はホスト名またはIPアドレスを指定
`charset`は文字セットを指定
“`php
$dsn = ‘mysql:dbname=test;host=localhost;charset=utf8mb4’;
“`
* $username…データベースに接続するためのユーザー名
ルート権限を使う場合、デフォルトは`root`です。
“`php
$username = ‘root’;
“`
* $p

元記事を表示

サイボウズGaroonでSOAP APIを使ってPHPでリクエストを送る

## 記事の概要
社内ネットワークで組んでいるシステムから、同じく社内ネットワーク内にあるオンプレミス版のgaroon5のユーザ情報を取得したいという状況が発生し、初めてSOAP APIを使ってみたという内容の記事です。

### 下調べ
ひとまずcybozu developer networkでgaroon API ドキュメントを確認。
[→SOAP APIの共通仕様](https://cybozu.dev/ja/garoon/docs/soap-api/overview/soap/)
[→ユーザ情報を取得するAPI](https://cybozu.dev/ja/garoon/docs/soap-api/base/get-users/)

### 使用しているgaroonのAPI定義確認
定義の中にリクエストの送り先がAPIの種類ごとに書いてあります。
“`xml

元記事を表示

laravel 他のフィールドの値によって必須としたいときのバリデーション

# やりたいこと

typeが1の場合のみdetailを入力必須にしたい
または入力禁止にしたい
“`
{
“type”: 1,
“detail”: “XXX”
}
“`

# 結論
“`php:FormRequest
public function rules(): array
{
return [
“type” => [‘required’, ‘integer’, new Enum(Type::class)],
// 入力必須にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::requiredIf(条件)]
// 入力禁止にしたいとき
“detail” => [‘string’, ‘nullable’, Rule::prohibitedIf(条件)]
];
}

“`

“`php:FormRequest
“detail” => [‘stri

元記事を表示

Laravel API Resourceのテスト

# 概要

調べ方が悪いのかもしれないけど、APIResourceのテストを書いた記事が見つけられなかった。
Featureテストを使えばリクエストからレスポンスまでをテスト出来るので、あまり需要はないかもしれないけど備忘録として残しておく。

## 環境

– Laravel10
– PHP8.1
– MySQL8

## Resource に Model を渡すケース

ControllerからユーザーモデルをResourceクラスに渡す

“`php: UserShowController.php

元記事を表示

OTHERカテゴリの最新記事