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

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

Moodle 3.7 – コマンドライン経由での管理

Contents

[1 CLI スクリプトを実行する](#1-cli-スクリプトを実行する)
[2 アップグレード](#2-アップグレード)
[3 インストール](#3-インストール)
[4 メンテナンスモード](#4-メンテナンスモード)
[5 オフラインモード](#5-オフラインモード)
[6 カスタムサイトのデフォルト](#6-カスタムサイトのデフォルト)
[7 ユーザパスワードをリセットする](#7-ユーザパスワードをリセットする)
[8 MySQL ストレージのエンジンの変換](#8-mysql-ストレージのエンジンの変換)
[9 InnoDB テーブルを Barracuda に変換する](#9-innodb-テーブルを-barracuda-に変換する)
[9.1 テーブルを変換するツール](#91-テーブルを変換するツール)
[10 あたらしい文字列セットへの変換と照合](#10-あたらしい文字列セットへの変換と照合)
[11 コマンドライン経由で cron を実行する](#11-コマンドライン経由で-cron-を実行する)
[12 スケジュールしたタスク](#12-スケ

元記事を表示

LaravelProjectをGitからPullしてからlocalhostで表示するまでの流れ

#初めに
どうもこんにちは、お久しぶりです。
一年ほど記事を書かない間に社会人になってしまいました。
今回、開発でLaravelを使うことになり、プロジェクトをPullしてから、画面表示できないという問題に直面しました。
その時に行った対処を記述していきたいと思います。
##前提条件
1. Git上に自分のブランチが作成されていること
2. プロジェクトに招待されていること(当たり前ですが。。。)
3. ソースツリーの設定が完了されていること(設定されていると楽です)

#今回の流れ
1. ブランチ作成、チェックアウト
2. Composerダウンロード
3. homebrewをInstall
4. php -v を7.2.Xにする
5. composer install

大まかな流れはこんなところになると思います。

##ブランチの作成
branch作成

“`
$git branch ブランチ名
“`
branch checkout

“`
$git checkout ブランチ名
“`
上記のコマンドでブランチ作成、チェックアウトまで行えます。

##Composerダウ

元記事を表示

PHPWord+TCPDFでWord→PDF変換

PHPWordを使ってWordファイルを作成していたところ、PDFファイルが欲しいという要望があり、WordからPDFの出力を試しました。変換方法はすぐに記事が見つかりましたが、日本語フォントの設定方法が意外と見つからなかったので合わせて紹介します。

環境
Windows 10
PHP 7.3.10

# ライブラリのインストール

“`
composer require tecnickcom/tcpdf
composer require phpoffice/phpword
“`

# フォントのダウンロード(必要な人のみ)

TCPDFではいくつか日本語の標準フォントが用意されています。以下参考
http://www.t-net.ne.jp/~cyfis/tcpdf/tcpdf/SetFont.html

標準以外のフォントを使用したい場合は、別途用意する必要があります。
IPAフォントダウンロードページ
https://ipafont.ipa.go.jp/old/ipafont/download.html

# 実装
PDF出力に関連する箇所のみ記載しています。

“`
$

元記事を表示

【mac】XAMPP7.3.11環境構築_config.inc.phpの編集&上書き保存方法

### <<更新日::2019年11月9日>>

config.inc.phpを上書き保存できない問題

phpmyadmin よりdatabase権限でパスワードを設定したのち、config.inc.phpのAuthentication typeを変更したい。

“`config.inc.php
/* Authentication type */
$cfg[‘Servers’][$i][‘auth_type’] = ‘config’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ”;
,
,
,
“`

ここで初見殺しが発生する。

上書き保存をしようとすると `Unable to save Permission denied ` となり変更が保存できないケースだ。

解決策

結論からいうと、root@debian権限で編集すればOK。
以下、解決策の手順を示す。

1.XAMPP.appから Open Terminalをクリック
![Screenshot 2

元記事を表示

dbpediaの研究 その27

#概要

dbpediaが難解なので、手出してみる。
phpで、取得してみた。

#サンプルコード

“`
“SELECT DISTINCT * WHERE { dbpedia-ja:デ・トマソ dbpedia-owl:abstract ?abstract .}”);
$data = http_build_query($data, “”, “&”);
$header = array(“Content-Type: application/x-www-form-urlencoded”);
$context = array(
“http” => array(
“method” => “POST”,
“header” => implode(“\r\n”, $header),
“content” => $data

元記事を表示

【PHP】file_get_contentsでWebページを取得する

#はじめに
どうも!PHP/Laravel学習中のじゃがと申します!メンターさんからの課題でWebページを取得する必要があったので最もシンプルな方法の一つ、標準関数の`file_get_contents`を利用する方法をまとめておきます。

引用:[file_get_contents — ファイルの内容を全て文字列に読み込む](https://www.php.net/manual/ja/function.file-get-contents.php)
#使い方
“`index.php
array(
‘method’ => ‘GET’,
‘header’ => ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safar

元記事を表示

【Mac】 ValetでLaravel環境を構築とLaravel アプリケーションの起動

# 想定読者
ValetでLaravel環境を構築したい人。
HomebrewとPHPは事前にインストールが完了していること。
zshを使用してインストールします。

# やること
– Composerのインストール
– PostgreSQLのインストール
– Valetインストール
– Laravel アプリケーションの起動

# ローカル環境の確認
– PHPのバージョン確認

“`
-> % php -v
PHP 7.3.6 (cli) (built: Jun 17 2019 08:40:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.6, Copyright (c) 1999-2018, by Zend Technologies
“`

# Composerのインストール
“`
-> % php -r “copy(‘https://get

元記事を表示

laravelのmigrationでハマった話 Cannot delete or update a parent row: a foreign key constraint fails

laravelでmigrationを実行するため、
`php artisan migrate:refresh` を叩いたところ、以下のエラーが出た。

Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails (SQL: drop table if exists \`comments\`)
![laravel__migration-error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408807/1cbd2055-4779-56c4-b5e3-4d1e89a9865e.png)

親子関係のアソシエーションを組んでいる場合、
migrationファイルの`downメソッド`で、
親子関係の親に当たるテーブルも削除しないと、このエラーが出るらしい。

なのでこうした。

“`php:yyyy_mm_dd_152937_create_comment

元記事を表示

【続】laravelのmigrationでハマった話 migrate:reset と migrate:fresh

前記事:[laravelのmigrationでハマった話 Cannot delete or update a parent row: a foreign key constraint fails]()

この後別の作業をしたため、
再度 `php artisan migrate:refresh` を叩く。

“`php

Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails (SQL: drop table if exists `comments`)
“`

あれ…解決したはずのmigrationでまたエラー出てるよ?

じゃー全部テーブル削除してリセットするかあ。
`php artisan migrate:reset`

あれ…やっぱりエラー出てるね?(以後10回くらい繰り返す)

## 勘違いしていた点:
`php artisan migrate:reset` は、
アプリケーション全部のマイグレーションの「*

元記事を表示

【2019年版】パーフェクトPHP解説その3 6章 掲示板フォーム作成と初コミット

ものすごく時間が空いてしまいました
パーフェクトPHPは班が古いため、データベースとPHPの接続方法がすでに廃止された方法となっておりました。
その部分の情報を学習するのに時間がかかってしまいました。
今回はその前に書き溜めていた部分です。一応79日目分としておきます。

# 6.2.4 【改善】アプリケーションを配置するディレクトリの作成
ここはすでに「~/environment/git_repositories/php_section_6」を作っているので不要かと思います。

# 6.2.5 コメント投稿フォームの作成
## 6.2.5-1フォームの作成
早速フォームを作成します。
~/environment/git_repositories/php_section_6配下に「bbs.php」というファイルを作成します。

“`
~/environment/git_repositories/php_section_6[master] $ touch bbs.php
“`

htmlにphpを埋め込んで作成します。
ここから下、記法が古いかどうかは判断できないので、動けば気にしな

元記事を表示

拡張メソッドは非常に便利だがPHPとは言語の質的に相性が悪い

PHPに拡張メソッドを実装しよう、というRFCが挙がっていたが、猛反対により却下になったらしい。以下は rana_kualu氏の解説。

[PHPでメソッドを動的に生やそう \- Qiita](https://qiita.com/rana_kualu/items/f8acce80384778a62041?fbclid=IwAR1KTuHWc-3mhdaD4RLqWnt6Jx3UeFJM1a96H0Mh1lppOfSjDwRRJeLZT_Q)

個人的結論から言えば、PHPは恐らく「言語の質的」に拡張メソッドとは相性が悪い。
それが反論に現れてる。故に反論の理由もある程度忖度はできる。

# 反論への忖度

##・extendsしたあとで基底クラスにメソッド追加したら死ぬ。

死にません。が言いたいのは判る。
PHPは、モジュール間結合がランタイムかつincludeである、というキモい特徴があり、実行するその瞬間まで、そのメソッドが何処の何者なのか、マジで解らないという駄目な特徴がある。
故に、PSR1やらPHPDOCで「運用で回避」してるわけだ。

それをこれ以上脅かすなと、そういうこ

元記事を表示

[AWSclient/sdk]Exceptionのerror-handle

php-Exception(try-catch構文)のお話し。
AWSclient/sdkのerror-handleで、プチはまりしてしまったので。。

Exceptionのerror-handleについて、サンプルコードを探していると
– `Exception`
– `AwsException`
– `SnsException`
– `S3Exception`
とかの使い分けを意識できてなかったので。
(モチのロンでしょ、って方には有意義なネタではないですので即終了で。ゴメンナサイ)

コード読み・試作した感じ、正しい実装例としては

“`php:sample.php
use Aws\Sns\Exception\SnsException;

function wrap_publish($args)
// ・・・

try {
$ret = $snsClient->publish($args);
} catch (SnsException $e)
$ret = false;
}
return $ret;
}

元記事を表示

【mac】XAMPP7.3.11環境構築_インストール後からHelloWorldまでの設定

### <<更新日::2019年11月9日>>

XAMPPはバージョンが変わるごとにアプリ起動直後のインターフェースが少しづつ変わることが多く、初心者にとっては最初の一歩目の環境構築でわからん殺しを食いやすい。さらにmacでの日本語情報が少ない。

本記事は、その助けとなるようXAMPP環境構築のためのチートシートとして育てていく。随時更新予定。

ダウンロード&インストール

OSX向け、XAMPP 7.3.11 をダウンロード&インストールしよう。
[XAMPP Apache + MariaDB + PHP + Perl](https://www.dropbox.com/s/6hhn84fpgn4a5wf/Screenshot%202019-11-09%2013.36.12.png?dl=0)
※データベースがMySQLではなく、MariaDBだがそこまで気にする必要なし。

手順1 XAMPP.appでやること

1: Applications -> XAMPP.app を起動

![Screenshot 2019-11-09 14.12.09.png](htt

元記事を表示

[AWS Cloud9]でのプロジェクトDownloadと、新プロジェクトへの復元方法

#AWS Cloud9
プロジェクトのバックアップ(ダウンロード)と復元方法をメモった

###前提条件
– Cloud9で作成したプロジェクト名は「cms」で作っていたので解凍後のフォルダ名で「cms」と出てきます。ご了承ください。

#バックアップ圧縮
#### 1.[file] -> [Download Project]
image.png
####2.ダウンロードして保管しておきましょう!

##バックアップ復元
####1.「プロジェクト名(フォルダ)を選択
![image.png]()
image.pngoffice系ファイルをPDFに変換する(PHP+LibreOffice)

自分自身の過去記事(既に3年前)の焼き直しです。
時の流れは早い。。過去の自分が役立つかもと思い、整理しました。

PHP+LibreOffice実行環境の構築手順をまとめてます。
ちゃちゃっと環境構築したいなら、「作業手順」の項だけ読んでください。

# 使い勝手、注意事項
– 変換後PDFの再現度はソコソコ。ページ・印刷設定はまず再現されない。PrimoPDFとかのレベルを期待してはダメ。
– 変換処理速度はそんなに期待できない。PHPExcelと同レベルの遅さかと(体感)。ファイルサイズが数MBを超えだすと1minでもキツそう。
– LibreOfficeインストールに2GB程度はディスク容量が必要。

顧客要件(プレビューの再現性)が厳しい場合のPDF変換には正直、導入しづらい、、、
でも、Word/Excel/PowerPoint全てに対応できる点が◎

# 作業時にハマったポイント
## libreoffice-packageのインストール
`wget`,`rpm`コマンドを使いこなしている人は大丈夫。`yum install`に普段頼りきりだとハマりそう。

## fon

元記事を表示

Moodle 3.7 マニュアル – Git ガイド

Git ガイド

[原文](https://docs.moodle.org/37/en/Git_for_Administrators)

このページは、あなたの本番サーバの Moodle のコピーを Git により楽にアップグレードして保存する方法について記述しています。Moodle のコアなコードをカスタマイズしているのなら、[Git for developers guide](http://docs.moodle.org/dev/Git_for_developers) の手順にしたがうことが推奨されます。

Git を最大限に活用するには、その基本的な概念を理解する用に努力するのは価値があります。以下の章を参照してください。もしあなたが、CVS や Subversion を使ってたのなら、あっという間に理解できるようになると思います。

内容

[1 Git について把握する(Windows, OSX, Linux その他)](#1-git-について把握するwindows-osx-linux-その他)
[2 Git からコードを得る](#2-git-からコードを得る)
[3 Gi

元記事を表示

Laravel 6.5で追加されたメソッドを試してみた

# 参考

[Laravel v6.5.0 released](https://blog.laravel.com/laravel-v6-5-0-released)

私はLaravel初心者です。間違いなどありましたら教えていただけるとありがたいです。

# `LazyCollection::remember()`

https://github.com/laravel/framework/pull/30443

`remember()`を呼び出すと、コレクションの列挙を記憶する新しいLazyCollectionが返されます。

DBから取ってきた値をキャッシュして使いまわすことができる。

“`php
// LazyCollectionの例
$todos1 = Todos::cursor();
$todos1->all(); // データ取得
$todos1->all(); // データ取得

// LazyCollectionからremomberを呼び出した例
$todos2

元記事を表示

【PHP】Laravel 学習メモ / フレームワーク構成の概念 さわり

PHPのフレームワークの1つであるLaravelについて、その仕組みを理解したいと思い構成について調べたのでざっくりメモ。まだ勉強中なので、また改めて上手く纏めたい。
今回は、機能の意味や目的などを書きます。

[Laravelドキュメント](https://readouble.com/laravel/)

目次:
1、ライフサイクル
2、サービスコンテナ
3、サービスプロバイダ

#1、ライフサイクル
####1、アプリケーションに対するリクエストは、全てpublic/index.phpファイルが入り口となる。

index.php:
1-1、composerが生成したオートローダーの定義をロード
1-2、bootstrap\app.phpスクリプトからLaravelアプリケーションのインスタンスを取得

Illuminate\foundation\applicationがインスタンス化

####2、kernelが生成される
HTTPリクエスト情報からRequestインスタンスを生成し、handleメソッドに渡す。

handleメソッド:
Requestを受け取り、Respon

元記事を表示

PHPのissetと!is_nullを勘違いしていた

PHPのisset()と!is_null()は同じだと思っていました。
[PHPの公式](https://www.php.net/manual/ja/types.comparisons.php)にも、逆の条件として載ってますし。
!isset()って書いてる人がいたら、is_null()の方が良くない?とコメントしていました。

しかし、is_null()でエラーが出ていて、isset()でエラーが出ていないことに気付き、よく調べてみると、

> 注意: これは、関数ではなく 言語構造のため、可変関数 を用いて コールすることはできません。

[PHP: isset – Manual](https://www.php.net/manual/ja/function.isset.php)

isset()は、関数ではなく言語構造。
empty()とかと一緒でエラーが出ないようです。

エラーが出る可能性がある時は、isset()を使うようにしましょう!

ちなみに、細かい所では、こういう違いもあるようです。
・ isset()と!is_null()の値は常に等しいか
https:/

元記事を表示

Laravel の LTS のアップグレード(5.5->6.x)を細かくみてみる

## 概要
Laravel の LTS が “`5.5“` から “`6“` に上がったので、既存の Laravel5.5 アプリケーションをアップグレードしたところ、これホントに6?と思ったので、詳しく見てみた。
先に結論としては、だいたい“`6“`だけど“`6“`じゃない。です。

## 検証環境
– MBP 13-inch, 2017
– macOS Mojave v10.14.6
– PHP version: 7.3.11
– Composer version: 1.9.1

2019年11月7日に実行

## 手順
1. “`5.5“`と“`6“`をそれぞれ用意する
2. “`5.5“`に修正を加え“`6“`にアップグレードする
3. “`5.5“`から“`6“`にアップグレードしたものと、“`6“`を比較する

## 1. “`5.5“`と“`6“`をそれぞれ用意する
Composer で “`5.5“`と“`6“`を用意する。

“`
$ composer create-project –prefer-di

元記事を表示

OTHERカテゴリの最新記事