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

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

【個人開発】Twitterのツイートをタグ付きでブックマークできるWebサービスを作りました

orange_alien([@_orange_alien_](https://twitter.com/_orange_alien_))です。プロのITエンジニアではありません。

個人開発でWebサービスを作ったので、サービスの概要や開発時に得た知見などを書いていきます。

# 作ったWebサービスの概要
Twikmark(ツイックマーク)
[https://twikmark.com/](https://twikmark.com/)

Twitterのツイートをタグ付きでブックマークすることができます(利用は無料)。
保存したいツイートのURLとタグ(任意)を入力して「ブックマーク」ボタンを押せばブックマーク完了です。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/773453/e6e846a3-1425-8cc4-f68b-441e183f8cfe.png “Twikmarkの使い方”)

※ツイートURLの取得方法は以下の通り
![002.png](https://qiita-ima

元記事を表示

Laravel 6.xでのメール認証機能導入後のBladeテンプレートの分岐処理

## 背景

Laravel 6.x LTSを使っていて、以下の手順でメール認証機能を導入した。

* [認証 6\.x Laravel](https://readouble.com/laravel/6.x/ja/authentication.html)

導入した後、Bladeテンプレート側に書いてた `@auth` や `@guest` をメール確認済みかどうかで分岐させたいとき、どう書けばいいんだろうか? となった。ドキュメントには特に何も書かれていなかったので自分で実験して調べてみた、という記録。

※なお執筆時点で最新のLaravel 8.xはまた全然違うものになってるようなので、これはあくまでもLaravel 6.x向けであることを最初に補足しておく。でも6.xはLTSなのでしばらくは有用なはず……。

## まず結論

元の記述
※`resources\views\layouts\app.blade.php` などにも最初からある記述

“`php
@guest
// 未ログイン状態の処理
@else
// ログイン状態の処理
@endguest
“`

修正

元記事を表示

ECS Ubuntu 18.04上にPHPでMemcachedサーバを設定する

このガイドでは、**ECS Ubuntu 18.04**インスタンス上に**Memcached**サーバを設定し、PHPコード上で**Memcached**サーバを使用して操作を高速化する方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-set-up-memcached-with-php-on-ubuntu-18-04_595628)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
始める前に、以下のものがあることを確認してください。

– Alibaba Cloudアカウント。サインアップは無料です。[Alibaba Cloudアカウント](https://www.alibabacloud.com/ja/referral?referralCode=1bgh7r)を作成して、50以上のAlibaba Cloud製品をテストするための最大1200ドル相当の無料トライアルをお楽しみください。
– オペ

元記事を表示

mixhost上でPHP Warning: Cannot modify header informationが発生した場合の対処

【背景】レンタルサーバーmixhost上のphp環境で”twitteroauth”を使用しtwitter認証を実施

【問題】PHP Warning: Cannot modify header information – headers already sent by(output started at /home/xxxxxx/public_html/xxxxx/twitter-login/login.php:8) が発生
※2箇所で発生し、いずれもheader()指定

【対応】下記サイトを参考に対応実施
[「Warning: Cannot modify header information…」エラーの解決方法[PHP]](https://kotori-blog.com/php/cmhi_error/)

●mixhostの”MultiPHP INI Editor”の”編集モード”で”output_buffering = 4096″を設定

![phpini.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

Moodle 3.9 – テキストの編集

[本文](https://docs.moodle.org/39/en/Editing_text)

コースのビジュアルコンテンツの一部であるテキストを編集または作成する通常の方法は、[テキストエディタ](https://docs.moodle.org/39/en/Text_editor)を使用することです。Moodleのデフォルトのテキストエディタは、[Attoエディタ](https://docs.moodle.org/39/en/Atto_editor)として知られています。プレーンテキストエディタとともに、人気のある[TinyMCEエディタ](https://docs.moodle.org/39/en/TinyMCE_editor)も利用できます。その他のオプションについては、[テキストのフォーマット](https://docs.moodle.org/39/en/Formatting_text)を参照してください。
管理者は、サイト管理のテキストエディタ領域から、有効にするエディタと無効にするエディタを決定します。
個々のMoodleユーザーは、管理者によって許可

元記事を表示

Laravel簡単ログイン機能に関する記事が少なかったので投稿してみた。

# はじめに
Laravelのポートフォリオ制作の過程において簡単ログイン機能の記事が少なく、(Railsの簡単ログイン機能の記事は山ほどあった。。笑)
個人的には参考にできる記事がなかったので、もしLaravelでポートフォリオ制作に おいてこの機能についてお役に立てたら幸いです。
# ※注意点
ポートフォリオを見て頂く方のストレスを軽減する事を優先ているため、セキュリティに関しては一切考慮していないので予めご了承ください。

# 開発環境
Laravel 6.18.40
PHP 7.3.11
Mysql
MacOS

# ゲストユーザーデータをDBに登録する
Laravelのインストール時にデフォルトで用意されているDatabaseSeederクラスを変更。

※insertする値は自分で設定してください※

(例)
‘name’ => ‘ゲストユーザー’,
‘email’ => ‘aaabbbccc@’,
‘password’ => ‘aaabbbccc’,

“`

元記事を表示

Laravel目的別逆引き(予定)

Railsでポートフォリオ作ってたけど転職先候補でLaravelを求められそうだったので学習中です。

### CRUDを作成したい
#### ビューを作りたい
###### resources/views/直下にフォルダを作成する
“`
% mkdir resources/views/sample
% touch resources/views/sample/index.blade.php
“`
###### 直接ビューをルーティング
“`php
Route::get(‘sample’,function(){
return view(sample.index);/*フォルダ名.ファイル名*/
});
/*viewが返すのはあくまでも、Responseインスタンス*/
“`
###### コントローラーを介してビューを表示する
“`php:routes/web.php
Route::get(‘sample/{id?}’,’SampleController@index’);
“`
“`php:app/Http/Controllers/SampleControllers.p

元記事を表示

Laravel メール自動返信機能 フォーム多重送信防止!

Laravelでメール自動返信機能のついた、お問い合わせフォームを作成してる時に発生した出来事を記事にするぞ!

・多重送信ができることが発覚した時のワイ(・o・)//WRYYYYYYYY(Dio)

・多重送信が発生する条件 = 送信ボタン連打

“`
//DB保存処理&完了画面表示
public function complete(Request $request){
//DBに保存
$contact = new Contact;
$contact->name = $request->name;
$contact->email = $request->email;
$contact->body = $request->body;
$contact->save();

//メール自動返信の奴
$sendData = $request->all();
\Mail::to($sendData[‘email’])->send

元記事を表示

CodeIgniterでエラーページを良い感じに構築したい

# 環境
PHP7
CodeIgniter 3.1.11

# 概要
CodeIgniterで404ページを編集する場合は、デフォルトでは以下のファイルを編集することになるかと思います。

`application/view/errors/html/error_404.php`

ただ、これでちょっとした不都合があります。

サイトが下図のような構成とします。
![プレゼンテーション1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241128/f2450f66-306f-c120-2201-6275173e413d.jpeg)

エラーページは以下のように表示したいとします。
![プレゼンテーション12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241128/83d24e0a-3c7b-f421-6390-97f59666f446.jpeg)

そうすると、前述のエラーページ用のファイルにヘッダーから何から

元記事を表示

docker内にてマイグレーション時にエラーが出て詰まった話 PHP laravel

#docker内にてマイグレーション時にエラーが出て詰まった話 (laravel)
以下エラー内容です

“`terminal:terminal
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from information_schema.tables where table_schema = db_name and table_name = migrations and table_type = ‘BASE TABLE’)

at /var/www/html/laravel-vue-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we’ll format the e

元記事を表示

CodeIgniter3 + PHPUnit 9.4.0 + ci-phpunit-test dev-2.x を利用した Unit Test環境の整備

# 概要

最近少しずつPHPの勉強を進めていまして、CodeIgniter3のフレームワークを利用した、
ちょっとしたWebアプリを練習で構築中です。
個人的にはJavaが得意なのですが、Javaのときには自然と作っていたテストクラスを、PHPでもそろそろ作りたいなと思って、見つけたのが`ci-phpunit-test`でした。

今回その環境を構築して、単純なテストを1つだけ作って確認するまでをまとめました。
※PHPUnitが9.4.0と最新バージョンになっていることで、非常に環境構築に苦労がありましたので、その辺の右往左往など解決に至るまでダラダラと時系列にメモとして残しています。

# PHPUnitのセットアップ

まずはPHPUnitのセットアップです。
ここでは、composerを利用してphpunitを現在構築中のアプリケーションにセットアップしていきます。

アプリケーションのルートフォルダは`/var/www/html/codeiogniter3`としていますので、基本的にはここをルートとして作業を進めていきます。

“`shell-session
# cd /

元記事を表示

WindowsのPHP7.4.4にSQLServerのドライバを入れる方法

1. [microsoft.com](https://docs.microsoft.com/ja-jp/sql/connect/php/download-drivers-php-sql-server?view=sql-server-ver15)からWindows用のドライバを落としてきて適当な場所に展開する
2. コマンドプロンプトで`php -r “phpinfo()” > phpinfo`する
3. 上記で吐き出した結果を`Thread`で検索、Thread SafeかUnSafeか調べる
4. 落としてきたドライバからバージョンとThreadが合うものを探して`php\ext`に配置
5. `php.ini`の`Dynamic Extensions`セクションに次のような感じで記述

“`ini
# php_と.dllは勝手に補完される
extension=pdo_sqlsrv_74_ts_x64
extension=sqlsrv_74_ts_x64
“`

6. `php -r “phpinfo()” > phpinfo`して`sqlsrv`が確認できたらOK

元記事を表示

初学者チームがWebサービス開発を始めて6週間経ったらそれぽくなってきた?

**[YouTube万屋エンジニアチャンネル](https://www.youtube.com/channel/UCHxqQ8bUg5F2GW79D_DvSjQ/videos)**のコミュニティ内で、「フレームワークって何?美味しいの?」レベルのプログラミング初学者が4人集まってWebアプリを制作を始めて6週間が経過しました。6週間経ってようやく、2週間前のような「見られたら超恥ずかしくて死にそう!」というレベルからは脱出できたかなと思います。

「初心者だけど何かモノを作ってみたい!」という方の参考になれば幸いです。過去の記事はこちらです。
「[初学者チームがWebサービス開発を始めて最初の2週間でやったことを振り返り、そして次を考える](https://qiita.com/kakudaisuke/items/8a3f9e9d9ed2630e7e4f)」
「[初学者チームがWebサービス開発を始めて4週間で出来たことと出来なかったこと](https://qiita.com/drafts/3596e78bd158f6e39987/edit)」

#目標達成度
2週間前掲げていた目標と

元記事を表示

Moodle 3.9 マニュアル – カテゴリ

[本文](https://docs.moodle.org/39/en/Special:Categories)

[インストール](https://qiita.com/intrajp/items/6d8af4fe337e64d14655)
[管理者](https://qiita.com/intrajp/items/555cbb8089a1f6301265)

[AJAX](https://docs.moodle.org/39/en/Category:AJAX)(8 members)
[AMC Academic Moodle Cooperation](https://docs.moodle.org/39/en/Category:AMC_Academic_Moodle_Cooperation)(1 member)
[About Moodle](https://docs.moodle.org/39/en/Category:About_Moodle)(23 members)
[Accessibility](https://docs.moodle.org/39/en/Category:Access

元記事を表示

PHP ~Cookie~

# Cookie
Cookie はブラウザにちょっとした情報を保存するための仕組みで、いったん値をセットしてしまえば、それ以降のリクエストではこの値を自動的に合わせて送ってくれるという仕組みになっています。

# setcookie() 関数
下記の画像は、colorという名前にcolorの値を保存してくれます。
そうするとブラウザにcolorの値をセットしてくれます。
![スクリーンショット 2020-10-06 17.41.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663122/c0c7b551-8f74-8757-5296-afc9b67bde05.png)
※setcookieの前に何も出力してはいけないというルールがあります。

# Session
Sessionを使う事によってサーバー側で情報を保持できる様になる為デベロッパーツールなどで値を確認したり編集できなくなりますので安全性が高まります。
#CookieとSessionの違い。
### Cookie
ブラウザ保存
サイズ制限

元記事を表示

GoogleAppEngineでIPアドレスを取得する方法

## $_SEVERからアクセス元のIPアドレスは取得できない

例えばLaravelで`request()->ip()`として得られるのは、`169.254.1.1`という、リンクローカルアドレスになる。
参考:[ループバックアドレスとリンクローカルアドレス](https://www.itbook.info/study/p62.html)

## IPアドレスはヘッダーから取得できる

以下のようにすればIPアドレスが取得できる。
`request()->header(‘X-Forwarded-For’)`

プロキシサーバーを経由している場合はカンマ区切りのデータになる。
先頭がアクセス元のIPアドレス、2番目以降はプロキシサーバーのIP。

参考:[Request Headers](https://cloud.google.com/appengine/docs/flexible/python/reference/request-headers)

元記事を表示

Ubuntu 16.04でECSインスタンスにComposerをインストールして使用する方法

このチュートリアルでは、Ubuntu 16.04でインストールされた**Alibaba Cloud ECS**インスタンスに **Composer**をインストールして使用する方法を説明します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-and-use-composer-on-ubuntu-16-04_595137)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

[Alibaba Cloud Community Blog](https://www.alibabacloud.com/blog?spm=a2c65.11461447.0.0.4b9d58c9VtvrHf)の著者であるGhulam Qadir氏によるものです。

[Composer](https://getcomposer.org/?spm=a2c65.11461447.0.0.4b9d58c9AtZlfU)は[PHP](https://www

元記事を表示

アリババクラウドECSでCentOS 7にNextCloudをインストール

この記事では、**Alibaba Cloud ECS**を使って**CentOS 7**に**NextCloud**をインストールする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/how-to-install-nextcloud-on-centos-7_594796)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

NextCloudは、DropboxやGoogle Driveに代わる、無料でオープンソースのセルフホスト型サービスです。自分のファイルを自分のプライベートサーバーにホスティングして、データを完全にコントロールすることができます。

#前提条件
1、CentOS 7.4をOSとして使用した新しいECSインスタンス。
2、ECSインスタンスに接続し、rootユーザとしてログインします。
3、ECS インスタンスに向けられたドメイン名。

CentOS 7 インスタンスにログインしたら、以下のコマンドを実行して

元記事を表示

CodeIgniter4でSmartyを使う(Composer利用)

#CodeIgniter4でもSmartyを使いたい
前の記事でも少し述べましたが、CodeIgniter4(以下CI4)のViewにはテンプレートエンジンと呼べるようなシロモノは含まれていません。
殆どの場合は生のPHPでHTMLのページなどを組み上げることになるのですが、実際の制作の現場だとロジック(PHP)とデザイン(HTML)のコーディングを分業している制作会社も多数存在しており、ここをSmartyやTwigなどのテンプレートエンジンで埋めているパターンが多いのではないでしょうか?
そこで、本記事ではCI4でSmartyを導入してViewのレンダラとして導入する方法を説明します。

#Smarty for CodeIgniter4を導入する
CI4上でSmartyを利用するには拙作、[Smarty for CodeIgniter4](https://github.com/kohenji01/CI4Smarty)を使うと手っ取り早いです。
CI4への組み込みは最低限の内容にとどめているので動作は軽いと思います。

例は「[CodeIgniter4をインストール (Composer

元記事を表示

【Laravel】チーム開発:クローンからhttp://127.0.0.1:8000接続まで

#1.クローンしてくる

今回はgitlab、Sourcetreeでクローンします。

gitlabのプロジェクトページから’clone’ボタンよりSSHのコードをコピーする。

sourcetreeの新規→URLからクローン

URL、保存先のパス、名前を入力してクローンする。

#2.composer install する

クローンしてきたファイルのディレクトで

“`
$composer install
“`

を実行する。

#3. .envファイルを作成、 Laravelのアプリケーションキーを生成する。

クローンしてきたファイルのディレクトで

“`
$ cp .env.example .env
“`
を実行して.env.exampleファイルをコピーして.envファイルとして作成する。

その後に以下コマンドでLaravelのアプリケーションキーを生成する。

“`
$php artisan key:generate
“`

#4.4. 起動

“`
$php artisan serve
“`

http://127.0.0.1:8000
にアクセ

元記事を表示

OTHERカテゴリの最新記事