PHP関連のことを調べてみた2020年01月16日

PHP関連のことを調べてみた2020年01月16日
目次

WindowsにphpMyFaq(sqlite)をインストール

# インストール環境
今回は以下の環境にphpMyFaqをインストールする手順を紹介します。

– OS:Windows10
– IIS:10.0
– PHP:7.3
– phpMyFaq:2.9
– SQLite:3.30

#事前作業
以下の作業は完了しているものとして説明を割愛します。
調べればいくらでも手順が見つかるので…

– IISのインストール、およびCGIの有効化
– PHPのインストール、php.iniの作成
– SQLiteのインストール、パスの追加

# 手順
## php.iniの設定変更
phpMyFaqを使用するために設定を変更します。
拡張モジュールの追加と、phpMyFaqインストール時に実行するセットアップスクリプトがタイムアウトしないようにするための設定を変更します。
処理がタイムアウトしてしまうとインストールが中途半端な状態で終わってしまうため、作業をやり直す羽目になります…注意してください!

■既存設定の変更(10時間に変更)
max_execution_time = 36000

■コメントアウトしている箇所を有効化
extension

元記事を表示

?【CakePHP2】処理の中で別のDB設定ファイルを読み、その内容にてDB再接続をする

## 環境
PHP 7.2.21
CakePHP 2.10.18
MySQL 5.7.27

## やりたいこと
CakePHPの処理中にて別のDBからデータを取得するためにDBの再接続を行いたい
前の記事にて別のDB設定ファイル読込み関数を用意したのでそれと合わせてControllerからDB切替えを行う

## やったこと
ビヘイビアに別のDB情報を読み込む関数を用意し
ModelでactAsでビヘイビアを指定

Modelには更にDB再接続の関数を追加しておいてControllerで呼び出す

### Model

“`Model/AppModel.php

元記事を表示

[PHP]クラスのプロパティーのDocコメントのannotaionの取得

## 前提
c#のattribute的な書き方をしたい

## 作ったもの
PropertyのDocCommentにhiddenがあったら、

“`html

“`

を返します。

## 実装
まずは値を格納するだけのクラス。
ViewModelを想定しました。

“`php
class ExampleViewModel extends ViewModel{
/**
* 返す
* @hidden true
*/
public $hidden_prop;
/**
* 返さない
* @oden
*/
public $not_hidden_prop;
/**
* 返さない
* @hidden false
*/
public $false_hidden_prop;
/**
* 返す
* @hidden true
*/
public $hidden_prop2;
// 返さない
pu

元記事を表示

Laravel で MySQLのTime型の最大値を超えて集計する

# やりたいこと
MySQLのTime型は
>’-838:59:59′ から ‘838:59:59’
にまでしか対応していません。

なので仮にDBに○○した時間をtime型で保存し、合計を取り出そうとすると上限に当たる可能性がありませす

#集計方法
MySQLのTime_TO_SEC関数を使います。
その名の通りこれは、Timeを秒数に直してくれます。
秒数に直したものを合計し、それを取得します。

取得した秒数をPHPでHH:MMに整形してあげれば、上限を超えた状態になります。

“`PHP:TestController.php

public function summary()
{
$user = User::selectRaw(‘SUM(TIME_TO_SEC(‘sleep_time’)) as total_sleep_time’)
->where(‘name’,’太郎’)
->first();

$time = $user->total_sleep_time;
// HH:MM
sprintf(‘%02d:%02

元記事を表示

【PHP】コマンドでPHPファイルを任意のPHPバージョンを指定して実行する。

開発環境でxamppを複数バージョン使っているため、PATHを通したPHP以外で実行したいことが多々あるため、メモとして残します。

#■やり方

“`shell

C:/xampp5.6.32/php/php.exe -f “C:projects/testproject/test.php”
“`
はじめにPHP実行ファイルのフルパス。
`-f`オプションでファイル実行になります。
最後に実行するPHPファイルのフルパスを指定。

元記事を表示

【WordPress会員機能】WP-Membersプラグインで登録時にメール認証(ダブルオプトイン方式)を実装する方法

WordPressで会員サイトを構築するとなると、プラグインの候補がある程度絞られてきます。
中でも導入数が多く、日本語ドキュメントも充実しているのが、『[WP-Members Membership Plugin](https://ja.wordpress.org/plugins/wp-members/)』。
登録時のフィードのカスタマイズができることや、ユーザーによるプロイフィール編集ができるなど、基本的な会員機能が一通り備わっており、使い勝手が良いのですが、どうしても仕様上欲しかったのが、新規登録時のメール認証。

1. フォームに入力して新規登録
2. 確認メールが届く
3. メールにある本登録URLをクリック
4. 本登録完了

と言った、動きを実装するべく調べていたところ、公式サイトにドキュメントを発見。
[Send new user an activation link in the new registration email](https://rocketgeek.com/filter-hooks/send-new-user-an-activation-link-in-

元記事を表示

Visual Studio Codeを使用してPHPのデバッグを行う方法(備忘録)

visual studio codeを使用して、phpのデバッグを行う事にしたが、数日間試行の上、やっと解決したので備忘録として記載します。

phpを使用する目的として、webサーバー用に組み込む事を前提に記載します。
Xampは、用いず、Apache24をインストールし、binにて、httpdで立ち上げる方法を取ります。
Visual Studio Code, php74はインストール済との前提で記載します。

“`php

“`
上記の様な簡単なプログラムに、ブレークポイントを付け、Step Inが出来る事を目的とします。
このコードは、Apachee24のhtdocsに、hello.phpとして保存して置きます。

下記の図で、PHP Debug等をインストールします。
![php1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/347416/1ae6053c-3f19-cbb

元記事を表示

Declaration of <クラス名>::<メソッド名> should be compatible with <クラス名>::<メソッド名>

# 状況
phpunitのsetUp()メソッドを設定した時に、タイトルのエラーが発生

# エラー内容と対象方法
setUp()メソッドは親クラスのメソッドをオーバーライドしているのですが、
オーバーライド元とオーバーライド先でメソッドの引数または戻り値が異なる場合にエラーが発生します。

この場合、親クラスの戻り値が以下の通りvoidとなっているため、
オーバーライド先でも同様の指定が必要となります。

“`php:TestCase.php
/**
* Setup the test environment.
*
* @return void
*/
protected function setUp(): void
{
if (! $this->app) {
$this->refreshApplication();
}

$this->setUpTraits();

foreach ($this->afterApplicationCreatedCallbacks as $callback) {
$callback();

元記事を表示

WordPressと静的コンテンツを共存させる方法

WordPressのトップにあるindex.phpを確認。
初期設定通りであれば、
wp-blog-header.php
を参照するように設定されているはず。

“`index.php
ドキュメントルート/wp/index.php
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . ‘/wp/wp-blog-header.php’ );
“`

wordpressが読み込む順番は、
index.php→wp-blog-header.php

なので、index.phpと同じ階層に表示させたいコンテンツを配置することで、
1. 静的コンテンツを配置したディレクトリ
2. wp-blog-header.php
の順番に参照します。

ここで1つ問題なになるのが、
Wordpressと静的コンテンツのディレクトリが重複してしまう場合です。

例)
WordpressのURL
https://sample.com/test/
静的コンテンツとして表示させたいURL
https:

元記事を表示

PHPで配列の中身を文字列型として取り出したい時

#はじめに
業務でAPI連携をする際に遭遇した内容となります。
備忘録として残そうと思って今回、書きました。

#例えばこんな時に使う(実際に自分が遭遇した状況)

APIでリクエストを送った際、返ってきたレスポンスの中でidやnumberなどを配列として保存して、後で別のAPIのリクエストを送る際に使用する時・・・

#サンプルコード

“`php5:test.php

public function main() {
$idList = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ’10’]
foreach ($idList as $arrayId) {
createRequest($arrayid);
}
}

public function createRequest($arrayid) {
$strId = (int)$arrayId[0];
$response = $this->httpClient->request(
‘GET’, //method
sprintf(‘/users/%s’, $st

元記事を表示

laravelでカバー画像も表示できるブックレビューアプリを作った。※自分の学習用です

#何を作った?
PHP、laravelの勉強として、カバー画像も表示できるブックレビューアプリを作りました。
まずpaizaラーニングを参考に掲示板アプリを作り、そこにGoogleBooksAPIsでマンガのカバー画像を引っ張ってきます。デプロイはまだです(挑戦したがうまくいきませんでした)。

基本的な機能はよくある掲示板アプリと同様です。なのでAPIを利用した画像の取得・利用について書きます。

##レビューを投稿するまでの流れ(ログイン済みと想定)
①まず検索窓にマンガのタイトルを書きます。
②候補のカバー画像がいくつか出てきます。この画像はボタンになっていて、クリックして選択できます。
③画像を選択したらタイトルと本文を記入し、投稿して完成です。いいね!ボタンもあります。
僕は左側に画像、右にタイトルと本文を配置しました。

##検索フォームを作る

“`getCover.blade.php
{{ Form::model([‘route’ => [‘article.getCover’]]) }}

元記事を表示

PHP-【Laravel】 Target class [App\Http\Controllers\Auth\ConfirmPasswordController] does not exist.エラー対策

Laravelのプロジェクトは6.0 から6.2にアップグレードした後、php artisan route:listを実行した時に起きた問題です。

##現象
Laravel6.0 から6.2にアップグレードしてからphp artisan route:listをすると、下図のように**Target class [App\Http\Controllers\Auth\ConfirmPasswordController] does not exist.**エラーが出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529234/9c3d9d3b-ce29-3aa5-f144-6f46e1e14c69.png)

##原因
laravelプロジェクトのApp\Http\Controllers\AuthフォルダーにConfirmPasswordController.phpがないのは直接原因です。6.0->6.2の差分で分かったのは、laravel6.0のコアアプリケーションにこのファイルがな

元記事を表示

wordpress PHP バージョン変更に伴うちょっとしたエラー

内容はタイトルのとおりです。ちょっとしたエラーと書いていますが、全然ちょっとしていませんでした。むしろ、致命的でした。危なかった。。。

# 経緯
案件で、すでにあるwordpress公開サイトをデザイン・システムをほぼ変えずに別ドメインとして、公開というものがありました。(同一のお客さんだが、あくまで別サイトとして公開)
ほぼ変わらないので、DB・テーマファイルを一式、複製したら終わるだろうと思っていましたが油断。。。

# 開発環境
サーバー かごやネット
php 7.2.12
MySQL 5.6.36
WordPress: 5.3.2

# 発生したエラー
確認したものから順番に列挙します。

## プラグインの更新、削除、新規追加の際にエラーが出る。
例えば、アップデートの際には ` {“success”:true,”data”:{“update”:”plugin” … }` と表示される。一見アップデートできていないように思うが、リロードしたところ、新しいバージョンに変わっていた。お客さんの方で、プラグインは触らない箇所なので、後で解決しよう~~(まあいいか)~~

元記事を表示

Boost.Asioで名前解決(非同期)

[前回の続き]
(https://qiita.com/tako3pro/items/08961c5dc7a8d398b859)

#使用したツールなど
前の記事を参照

#やりたかったこと
1. 「非同期」にする。
2. 「POST形式」で送信する。
3. 「クラス」にする。

#コード
クライアント:

“`main.cpp
#include
#include
#include
#include
#include
#include
#include “json11.hpp”

using namespace std;
namespace asio = boost::asio;
using asio::ip::tcp;

class Client {
asio::io_service& io_service_;
tcp::socket socket_;
tcp::resolver

元記事を表示

オブジェクト指向を語ろうと思ったけど、一旦クラスの話をしようwithアンパンマン

どうも、やまうちです。

先日(てか昨日読み終わった)この本を読みました。
「オブジェクト指向でなぜつくるのか 第2版」

[オブジェクト指向でなぜつくるのか](https://www.amazon.co.jp/dp/B00ISP0QB2/ref=cm_sw_r_tw_dp_U_x_CsehEbFS7DVXM)

有名な本なので読んだことがある方も多いとは思いますが、半分素人の弱弱エンジニアの僕はこの本からオブジェクト指向とは?を学ぶべく、3連休を利用して読んだんですね。
ということで、自分の理解度をチェックしつつアウトプットで知識の定着をはかりつつ、よくわからん!って方のためになるようわかりやすくアウトプットしていく感じの記事です。
ちなみに今回触れている内容はオブジェクト指向っていうよりも、クラスの話になります。

なんか違くね?
って思ったら最大限優しく教えてくださいm(_ _)m
最大限です。
※大事なことなので2回言いました

## クラスに備わる3つの仕組み
– まとめる
– 隠す
– たくさん作る

って書いてました!!!!
なのでこれに沿って書いていきます。

###

元記事を表示

GASで翻訳API作成してLaravelで叩くまで

# はじめに

この記事では

GASで英語から日本語に翻訳するAPIを作成しLaravelで結果を取得までします

## GASを作成

こちらの記事を参考に作成しました
[3 分で作る無料の翻訳 API with Google Apps Script](https://qiita.com/tanabee/items/c79c5c28ba0537112922)

## controllerを作成

一部抜粋

“` TransController.php
public function index() {

$transApiUrl = ‘公開したAPIのURL’;
$transSource = ‘en’; // 翻訳前の言語
$transTarget = ‘ja’; // 翻訳語の言語
$transText = “Hello”; // 翻訳する文字

$transApiUrl .= ‘?text=’ . urlencode($transText);
$trans

元記事を表示

数字を指定の桁数に整える

# 記法

“`php5:書式
str_pad(対象文字列,埋める桁数,埋める文字列,埋める辺)
“`

第一引数:0埋めの対象となる文字列
第二引数:埋める桁数
第三引数:埋める文字
第四引数:左を埋める場合はSTR_PAD_LEFT、右を埋める場合はSTR_PAD_RIGHT、両側を埋める場合はSTR_PAD_BOTHを指定します。実際にコードを書くとなると下記のようになります。

# サンプルコード
“`php5:Sample.php

$CountOfFiles=100;
for($i=1;$i<$CountOfFiles;$i++){ echo str_pad($i, 2, 0, STR_PAD_LEFT); } ``` # 結果 ```php5:結果 $ sample.php 001 002 003 004 ... ``` # 参考 http://wp.tech-style.info/archives/582

元記事を表示

Goutteで空港情報を取得してみる

# はじめに

友達との作品制作で空港の情報が欲しくなった時にスクレイピングしてみようと思い

下記のサイトさんがたくさんの情報が載っていたのでスクレイピングしようと思いました。
https://www.airlineguide.jp/airport-codes/

PHPやLaravelは初心者でいろんな方の記事を参考にさせていただきました

[Laravel/Goutteで映画タイトルをクローリングする](https://qiita.com/vivid_colors/items/feecf2af1dd646f7395a)

[Goutte(PHP)でスクレイピングしてみる](https://qiita.com/fksk/items/6807d5de07f93114087c)

利用するものとしては友人がLaravelを使用していたのでそれに合わせました

※スクレイピングについては色々あると思うので自己責任でお願いします。

## スクレイピングとは

>スクレイピングはサーバサイドのプログラミング言語を使って外部サーバへアクセスし、そのコンテンツから自分たちの欲しい情報を引き出す

元記事を表示

Dockerでnginx等を使う時はまずLinuxの知識をだな……(戒め)

## DockerとかVagrantでnginx等を使う時はまずLinuxの知識をだな……(戒め)

#1. 背景
フロント学んできて、そろそろバックエンドもまなんでみようと思い、せっかくなので流行りのDokcerを使用しPHPでサーバーに画像をアップロードするコードを書いた。
そしてハマった

#2. 環境

・windows10

元記事を表示

LaravelのJWT認証でいろいろカスタマイズ

仕事で考えないといけなくなったので、いろいろ試してみました。

# 作るもの
以下の条件を満たす認証機能を作ります。

– JWT 認証
– ユーザテーブルが、Laravel 標準のテーブル定義で **ない**
– デフォルトの `users` テーブルは使いません
– パスワードのハッシュ化が Laravel 標準の方法で **ない**
– デフォルトの `bcrypt` ではなく `SHA256` を使います

なお、Laravel 標準が使える環境ならば、そうしたほうが良いと思います。
この記事は **やむを得ず** そうせざるを得ない場合のために書かれています。

# 前提
## バージョン
– Laravel 6.9.0
– PHP 7.4.1
– MariaDB 10.3.11

## 扱わないこと
以下については、この記事では触れません。

– Laravel 標準の認証機能について
– [JWT](https://ja.wikipedia.org/wiki/JSON_Web_Token) そのものについて
– JWT 認証の是非について

# 手順
## 非標準

元記事を表示

OTHERカテゴリの最新記事