- 1. Docker環境にて、PHPのデバッグができるかどうか試しにやってみた
- 2. while構文
- 3. 備忘録_レンタル共用サーバーでcomposerを使う
- 4. 【PHP】配列を文字列(EDI情報)化
- 5. DoctrineCacheBundleが非推奨になったのでSymfonyのCacheを使うようにした
- 6. 【WebAudioAPI】録音した音声をバイナリデータ化、PHPへ受け渡し
- 7. fputcsvのダブルクォーテーション問題をスッキリ解決する
- 8. 【Laravel】24時間以内に作成されたユーザーの数を集計する【指定範囲のデータ取得】
- 9. LaravelでAWS認証エラーが起きる?恐らくそれはconfig_cacheの影響です
- 10. 文字列・配列の変換など
- 11. PHP 変数の誤用
- 12. 【SEO】レガシーなサイトの表示速度を16倍早くした話
- 13. PHPの終了タグは「?>」を付けるか付けないかは判断しようねという話
- 14. 【PHP】headerでリダイレクトしよう
- 15. 未経験半年で作成したWebアプリを、実務半年経ったのでリファクタリングしてみた
- 16. コード書かずに超スピード開発~(DEMO動画あり)~最新版『 Laravel DB.com 』
- 17. PHP/MySQLを使った掲示板をherokuでデプロイする流れ
- 18. Laravel で Cloud KMS を使って暗号化/復号化をしてみた。
- 19. PHPでフォームを作成する基本
- 20. Moodle マニュアル 3.8 – アップグレードの警告
Docker環境にて、PHPのデバッグができるかどうか試しにやってみた
#はじめに
・今の職場にてPHPの開発をしているだが、デバッグができなくて困っている。苦肉の策でログを出しながら確認しているが、なんとかしたいと思い。
最近かじったDocker環境にてPHPのデバッグができる様なので、試しにやってみた。#使用ツール
|項目 |バージョン |
|—|—|
|PC|Razer Brade Pro 2019|
|OS|Ubuntu 18.04 LTS |
|Docker |19.03.5|
|Docker-Compose |1.17.1 |
|PHP |php:7.2.7-apache (連携されているコンテナ)|
|Xdebug |2.7.0 |
|Visual Studio Code|1.41.1 |“`dockerfile:Dockerfile
FROM php:7.2.7-apacheRUN apt-get update && \
docker-php-ext-install mysqli && \
pecl install xdebug
“`“`yml:docker-comp
while構文
while構文
“`
繰り返す条件を作るための初期化処理
while (繰り返す条件){
繰り返したい処理
更新処理
}
“`
↓↓↓↓↓“`
$i = 1;
while ($i <= 365){ print $i . PHP_EOL; $i = $i + 1; } ``` - 一番重要なところは「繰り返す条件」`($i <= 365)` - ◯◯が△△になったら繰り返してください、◯◯が△△ではなくなったら繰り返しをやめてください、といった条件を記述する - 上記の場合は『$iという変数の内容が365以下の間繰り返す』と言った条件になっている - `$i`は最初どういう状態なのか? - 「初期化処理」`$i = 1;`の部分で行われる - `$i = 1`として数字の1を代入しているので、最初の`$i`の状態は 1 であることがわかる - while構文の条件である『$iが365以下』に該当するので、while構文の中括弧に入って「繰り返したい処理」が行われる - while構文は「繰り返したい処理」が終わると、元の
備忘録_レンタル共用サーバーでcomposerを使う
1. 以下のリンクを参考に、composerインストール用のPHPファイルを作成
※諸事情により`php -r`が実行できん場合に限る
https://getcomposer.org/download/“`
【PHP】配列を文字列(EDI情報)化
#はじめに
EDI情報作成時に使ったロジックなので備忘録として残します。#サンプルコード
“`php
class TestA
{
public function __construct()
{
$this->test1 = “00”;
$this->test2 = ” “;
$this->test3 = “00”;
$this->test4 = ” “;
$this->test5 = “GG”;
}
public function getTest1()
{
return $this->test1;
}
public function setTest1($test1)
{
$this->test1 = $$test1;return $this;
}
・・・(省略)
}class TestB
{
$test;public function build()
{
$this->setTest(new TestA
DoctrineCacheBundleが非推奨になったのでSymfonyのCacheを使うようにした
## 概要
Symfonyのアプリケーションで、キャッシュをする際に `DoctrineCacheBundle` を使っていたが、
`doctrine-bundle` が2.0系にバージョンアップしたタイミングで、
`DoctrineCacheBundle` が非推奨になっていたので、
SymfonyのCacheで実装したのと、その際に **クリアキャッシュで少しハマった話。**## 環境
– Docker
– Symfonyアプリケーションが動作するWebコンテナ(`:443`, `:80`)
– Apache 2.4.41
– PHP 7.3.9
– Symfony 4.4.3
– PHPUnit 8.5.2
– DBコンテナ(`:3306`)
– MySQL 5.6
– Memcachedコンテナ(`:11211`)## 実装方法
`doctrine-bundle` パッケージが 2.0系にバージョンアップしたタイミングで非推奨になった。
https://github.com/doctrin
【WebAudioAPI】録音した音声をバイナリデータ化、PHPへ受け渡し
#概要
Node.js上で、IBMのWatsonによって人が話した音声データを自動で文字起こしするスクリプトを作成しました。
その中で、結構苦労した
PCのマイクに直接アクセス→録音した音声データをバイナリデータ化、PHPへ受け渡し
の部分をメモがてら貼り付け。
#環境
“`
$php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
“`
#録音部分
“`hogehoge.js
// 音声データのバッファをクリアする
audioData = [];//様々なブラウザでマイクへのアクセス権を取得する
navigator.mediaDevices = navigator.mediaDevices || navigator.webkitGetUserMedia;//audioのみtrue
fputcsvのダブルクォーテーション問題をスッキリ解決する
# 経緯
文字列をダブルクォーテーションできっちりくくった状態でcsvに吐き出す必要があった。
SQL側で文字列結合とかquote_identとかでダブルクォーテーション付けて結果を取得し、fputcsvで書き出すと下記状態になってしまっていた。( ゚д゚) ・・・ (つд⊂)ゴシゴシ (;゚д゚)
“`
“””文字列”””,”””文字列”””,….
“`どうやらfputcsvが残念仕様でPHP的には良くある話のようだ。
割とfputcsvを再発明して関数とかで何とかしてる人が多い気がする。**ワイはそんなのやりたく無い**
# どうやったか
文字列にして乗り切った
前
“`
fputcsv($file, 文字列);
“`後
“`
file_put_contents($file,implode(“,”,文字列).PHP_EOL,FILE_APPEND);
“`
【Laravel】24時間以内に作成されたユーザーの数を集計する【指定範囲のデータ取得】
# 1日
“`php
use DB;DB::table(‘users’)
->orderBy(‘created_at’,’desc’)
->whereRaw(‘created_at > NOW() – INTERVAL 1 DAY’)
->count()
“`# 30分
“`php
->whereRaw(‘created_at > NOW() – INTERVAL 30 MIN’)
“`# リファレンス
* [MySQL :: MySQL 5\.6 リファレンスマニュアル :: 12\.7 日付および時間関数](https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-functions.html)
この記事が作成されている時点では、以下のリファレンスが用意されていたのですが、バージョンアップで参照できなくなるとおもうので、適宜環境にあったリファレンスを参照してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amaz
LaravelでAWS認証エラーが起きる?恐らくそれはconfig_cacheの影響です
約6年ぶりくらいにPHP(初Laravel)を触ってるのですがプチハマりしました。残存cacheの影響でハマるとか、物凄く良くありそうなシチュエーションなのに具体的な解決策を見つけられなかったので書いておきます。
LaravelでAWSソリューションを使ってるとこんなエラーレスポンスにめぐりあうかもしれません。
“`
{
“code”: “400”,
“message”: “Client error: `GET http://169.254.xxx.xxx/latest/meta-data/iam/security-credentials/` resulted in a `404 Not Found` response:\n\n
文字列・配列の変換など
###文字列を配列に変換
“`php:qiita.php
$menu = ‘プリン,ショートケーキ,ガトーショコラ,いちごパフェ,パンケーキ’;
$menu = explode(“,”, $menu);
// , を配列の要素の区切りとする。
print_r($menu);
//Array ( [0] => プリン [1] => ショートケーキ [2] => ガトーショコラ [3] => いちごパフェ [4] => パンケーキ )
“`###配列を文字列に変換
“`php:qiita.php
$menu = implode($menu);
echo $menu;
//プリンショートケーキガトーショコラいちごパフェパンケーキ//引数に区切りを指定できる
$menu = implode(“,”, $menu);
echo $menu;
//プリン,ショートケーキ,ガトーショコラ,いちごパフェ,パンケーキ
“`###文字列に区切り(、 とか)がないとき
“`php:qiita.php
$num = “01234567890”;
$num =
PHP 変数の誤用
PHPを勉強中です。
サンプルプログラムを作成していて、思ったように動作しないことがあります。
いろいろ、さんざん調べた挙句、変数名が違っていることが往々にしてあります。
たとえば、$_SESSIONを$SESSIONと記述していたりなどです。
PHPのビルトインサーバーやデベロッパーツールにエラーが表示されれば、助かるのですが、そのような方法は無いのでしょうか?
【SEO】レガシーなサイトの表示速度を16倍早くした話
# 前置き
運営しているサービスがかなりレガシーなので、負の遺産が多いです。入社した頃からサイトの速度が遅いなと感じていながら、日々の業務を追われているうちに後回しになっていました。
それから半年たったある日、SEOに注力する方針となり上司からサービスのサイトの表示速度が遅いので、本日中に何とかしてほしいとのことでようやく時間を割いて対応することになりました。
# 環境
* PHP 5.2
* Breeze framework
* MariaDB 5.5.62# 速度改善で要因特定にやったこと
* Chromeのデバックツールで表示速度を確認
* バックエンドかフロントエンドか要因を切り分け
* バックエンドに時間がかかっていることが判明
* PHPのソースコード内に速度を図るコードを埋め込み
* DBの処理に時間がかかっていることが判明# 速度改善にやったことまとめ
1. **(効果:◎)DB:EXPLAINで実行計画を行い、INDEXを設定**
1. (効果:△)PHP:ロジックを修正(不要な処理を削除)
1. **(効果:◎)DB:EXPLAINで実行
PHPの終了タグは「?>」を付けるか付けないかは判断しようねという話
◼️理由は終了タグを省略することでファイルの最後にある余空白文字が出力に影響することを防ぐ
◼️htmlでは改行コードを半角スペースとして認識する
◼️htmlテンプレートなどに記述する際は週s量タグは必要参考:
https://thesaibase.com/php/end-tag
【PHP】headerでリダイレクトしよう
#はじめに
開発はフレームワーク(Laravel)を使いまくり、その中身(PHP)のことはあんまりわかってなかったので、
その勉強も兼ねて、PHPだけでリダイレクト処理を作ってみたときに学んだことをまとめてみます。#headerとは
生の HTTP ヘッダを送信する関数。
要するに、リダイレクトさせることができるPHP標準の関数です。笑#使用例
例えば、フォームから投稿する時を考えます。
まず、投稿ページからフォームで_POSTを飛ばします。“`PHP:create.php
“`
そして、送った先でDBに接続して、保存の処理を行います。
こちらについては、またいつか詳細をまとめたいと思います!!
そして、headerで一覧ページ(index.php)にリダイレクトします。“`PHP:save.php
//DB接続して、保
未経験半年で作成したWebアプリを、実務半年経ったのでリファクタリングしてみた
皆さんは最初に書いたコード覚えていますでしょうか。
#目的
18年の12月にPHPを勉強し始め、19年の3月頃からLaravelを勉強し始めました。
その後、19年の5月20日から6月15日までLaravelを使ったオリジナルアプリを作りました。当時Twitterで行われている100DaysOfCodeというものを行っており
活動時間とかわかればいいなーと思い作りました。作った当初は良いと思っていたのですが、エンジニアとして現場に出て半年、久々に見るとひどいなと思い
何がだめだったのか、供養がてらリファクタリングしてみようとやってみました。(※厳密にはリファクタリングではありません->若干挙動に修正が入っているため)なお、ユーザーが全く居ないのでデータ移行は考慮してないです
もっとこう出来る等ありましたら、ぜひ教えていただけますと幸いです。
#作ったもの
動作リンクは[こちら](https://github.com/natsume0718/Laravel-Uroboros)
##Topページ
– Twitterで登録・ログインを押すと、ソーシャルログインが行わ
コード書かずに超スピード開発~(DEMO動画あり)~最新版『 Laravel DB.com 』
## Laravel DB.com ってなに?
「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。
##DEMO動画(操作方法)
【YouTubeリンク>> https://t.co/jGVarMoXse 】
— LaravelDB.com (@ErdLaravel)の操作方法
PHP/MySQLを使った掲示板をherokuでデプロイする流れローカルで作った掲示板をheorkuに移行する際、めちゃくちゃ苦戦したのでまとめておきます。
#手順
##1. herokuに登録する
ここで、登録はクレジットカードの登録もしなければなりません。
クレジットカード登録ができなければMySQLを使うことができませんでした。
デビットカードでもできると思いますが、三井住友銀行のデビットでは無理でした。
楽天のデビットで登録しました。##2. heroku CLIをインストールする
https://devcenter.heroku.com/articles/heroku-cli
正直これは僕もよくわからなかったので、このサイトの手順通りにやっていったら大丈夫だと思います()
これでherokuのコマンドが使えるようになるはずです?##3. アプリを作成
“`
$ heroku login
“`ここでアプリのファイルがまとまっているルートディレクトリに移動してください。git管理するイメージです。
“`
$ heroku create アプリ名
“`アプリ名の指定がなければ自動で割り当てられます。
また、アプ
Laravel で Cloud KMS を使って暗号化/復号化をしてみた。
こんにちわ! @ktoshi です!
以前、[Cloud KMSをGoで使う](https://qiita.com/ktoshi/items/1fd4f808c955d33c3d28) 記事を書きましたが、今回は PHP(というよりLaravel)で使ってみようと思います。
実際はGoより先にこっちで使い始めてたのですが、諸々あり後発の記事になりました。
そんなわけではじめましょー。# Cloud KMS
暗号鍵をセキュアに管理できるGCPのサービスです。
自動ローテーションやIAMでの権限管理でセキュアなアクセスを実現できる上、APIを利用した暗号化/復号化を行えるので非常に柔軟な利用が可能です。
類似したサービスはAWSの「KMS」や Azureの「Key Vault」などがあります。# Key Ring と Key
Cloud KMS では Key を Key Ring で管理しています。
関係性は字のごとく、鍵と鍵束ですね。
ある程度同じ用途で使用される鍵については同じ Key Ring でまとめておくとよいでしょう。
実際に暗号化などで利用されるのは Key となり
PHPでフォームを作成する基本
##フォームの基本
– 入力画面
– 確認画面
– 完了画面index.php → confirm.php → thanks.php
と作る場合が多いその場合、formのaction属性をそれぞれの飛び先に指定する
##入力フォーム
“`php
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた