20210612のPHPに関する記事は7件です。

Laravel sail で環境構築

Laravel Sailというのを知ったのでちょっと試しに環境構築してみた。 Laravel Sailとは? Laravelのローカル開発環境構築に必要なパッケージなどがまとめられているDockerイメージ 今までは、Composer入れて〜xampp入れて〜、という感じでしたが Sailはコマンド2つ叩くだけで環境もプロジェクトも作成できます。 ※xamppはインストールされません。 手順 ※macbook air intel chip ※Dockerはインストール済み 1.[プロジェクト作成] プロジェクトを作成したいディレクトリに移動し curl -s "https://laravel.build/プロジェクト名" | bash を実行 2.コンテナ起動 ./vendor/bin/sail upを実行 コンテナ起動中は、以下のコードが繰り返されますが問題ありません。 mailhog_1 | [APIv1] KEEPALIVE /api/v1/events meilisearch_1 | [2021-06-12T12:07:00Z INFO actix_web::middleware::logger] 127.0.0.1:52060 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000144 meilisearch_1 | [2021-06-12T12:07:30Z INFO actix_web::middleware::logger] 127.0.0.1:52064 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000115` ブラウザでhttp://localhost/に移動 無事表示されました。 3.コンテナ停止 ターミナルで別タブを立ち上げ ./vendor/bin/sail up エイリアスの設定 alias sail='bash vendor/bin/sail' これで sail コマンド で実行可能 一旦、ここまでで もう少し開発進めてみて、Laravel Sailの良いところ、悪いところ 追記していきたいと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

職業訓練校 Webプログラマ養成科

職業訓練校に通い始めました 前職を辞めてからしばらくはJavaScript,PHPを中心に勉強していましたがオブジェクト指向の餌食になってしまい、エラーのオンパレード。そこで海外留学やプログラミング教室など誰かに教えて貰おうと思ったのですが高額すぎて諦めました。そんな中とある日何気無くYoutubeで2chの元管理人のひろゆきさんのライブ配信(本人曰く録画放送)の中でお金を貰いながら勉強できる公的サービスがあると聞いて調べてみた所、職業訓練と言う働く気がある者なら誰でも受ける資格があり場合によれば職業訓練手当と言う在学中月10万円ほどもらえる仕組みがある事を知りました。※詳しくは各地方自治体のハローワークのホームページをご参照ください
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【エラー備忘録】Target class does not exist. Laravelの認証機能 LoginControllerが見つからない。

状況 Laravelに備え付けの認証機能を使って、Googleの認証を実装する時のこと。 LoginControllerに処理を書き、route/web.phpに以下のルーティングを設定した。 route/web.php Route::get('login/google', 'Auth\LoginController@redirectToGoogle'); Route::get('login/google/callback', 'Auth\LoginController@handleGoogleCallback'); エラー内容 Webページに表示されたエラー文はこちら。 Illuminate\Contracts\Container\BindingResolutionException Target class [Auth\LoginController] does not exist. Illuminate\Container\Container::build vendor/laravel/framework/src/Illuminate/Container/Container.php:835 LoginControllerが見つからないとのこと。 原因の検証 このパターンのエラーで私がこれまで経験した例では、以下ような問題が原因…。 ・namespaceが定義されていない ・ルーティングファイルに書いているパスが不完全、誤っている ・ルーティングファイルに使いたいコントローラーをuseしていない 解決法 今回はnamespaceの定義部分がコメントアウトになっていました。 app/Providers/RouteServiceProvider.php protected $namespace = 'App\\Http\\Controllers'; この部分のコメントアウトを外すと、エラーは解消しました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Php】GET, POSTの学習ノート(1)

初めに GETについて学習した内容のoutput用記事です。 ※内容に間違いなどがある場合はご指摘をよろしくお願いします。 ※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。 GETのテスト Http通信でリクエストを行う方法の一つであるGETを試してみるための入力フォームを作成します。methodには"GET"と入力し、actionにはリクエスト先のページを入力します。ここではform.phpとしました。nameにはデータを取得するための名前を付けておきます。 <form method="GET" action="form.php"> 名前 <input type="text" name="input_name"> <br> <input type="checkbox" name="dishes[]" value="カレー">カレー <input type="checkbox" name="dishes[]" value="チヂミ">チヂミ <input type="checkbox" name="dishes[]" value="牛丼">牛丼 <input type="submit" value="submit"> </form> GETの場合、ブラウザーのアドレスバーに?から始まるquery stringが表示され、入力した値をみることができます。 $_GET phpに予め用意されているスーパグローバル変数$_GET。GETメソッドでリクエストした値が格納されています。 $_GET["nameの値"]); //$_GETの書き方 var_dumpを使って \$_GETの中身を表示してみます。また、empty()メソッドを使い\$_GETに値が入っている場合にだけ$_GETが表示されるようにします。 echo '<pre>'; if (!empty($_GET)) { var_dump($_GET); } echo '</pre>'; keyとvalueの連想配列として保存されていることが分かります。 POSTのテスト POST通信を行うため、methodをPOSTにした入力フォームを作成します。 <body> <form method="POST" action="form.php"> <select name="books"> <option value="--">本を選択</option> <option value="novel">小説</option> <option value="comic">漫画</option> <option value="magazine">雑誌</option> </select> <input type="submit" value="submit"> </form> </body> $_POST phpに予め用意されているスーパグローバル変数$_POST。POSTメソッドのリクエストとして入力した値が格納されています。 $_POST["nameの値"]); //$_POSTの書き方 \$_GETとは違って入力値を送信してもアドレスバーには何も表示されません。同じくvar_dumpメソッドで中身を確認します。 echo '<pre>'; if (!empty($_POST)) { var_dump($_POST); } echo '</pre>'; ?> こちらも\$_GETと同様、連想配列という形でデータが保存されていることが分かります。 参考サイト https://www.php.net/manual/ja/reserved.variables.get.php https://www.php.net/manual/ja/reserved.variables.post.php
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP入門メモ

PHPで色々と触ったので使ったもののメモを 基本 php <?php //<?php> <?>で囲む //行末に; //変数は頭に$をつけて宣言する $num = 15; $str = "apple"; //echoとつけるとhtmlとして出力される echo "<b>Hello, World!</b>"; //POSTされたものを受け取る $number = @$_POST["number"]; //numberでPOSTされてる時 //変数の中身の長さが0or有るかを見る //上記の応用でフォームを受け取れるかに使う if (!strlen($number)) { } //配列の宣言 //辞書みたいにも出来る $list = []; $dict = ["country" => "japan", "city" => "tokyo"]; //$dict["country"]で"japan"と出力される //乱数作成 $rand_num = mt_rand(1,99); //1~99までの乱数が作成される //for文 //javascriptと同じ $n = 10 for($i = 0; $i < n; $i++){ } //配列をシリアライズ、アンシリアライズ //どこかにpostする時は一旦シリアライズしてから送り先で戻す $seri_li = serialize($list); $un_seri_li = unserialize($seri_li); //配列の長さを取得 $count = count($list); //配列にappend array_push($追加する配列名,何かしらの値); //csvを取得し配列に格納 $csv_file = file_get_contents('txt/test.csv'); //変数を改行毎に配列に変換 $aryHoge = explode("\n", $csv_file); $aryCsv = []; foreach($aryHoge as $key => $value){ if(!$value) continue; //空白を除外する $aryCsv[] = explode(",", $value); } 受け取った配列をcsv出力 重要なのはhtmlタグ前に書く php <?php //csvと言う名のPOSTを受け取っていた時 function export($file_name, $data) { $fp = fopen('php://output', 'w'); foreach ($data as $row) { fputcsv($fp, $row, ',', '"'); } fclose($fp); header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename={$file_name}"); header('Content-Transfer-Encoding: binary'); exit; } ?> <?php if (isset($_POST['csv'])) { $get_csv = $_POST['csv']; $csv_list = unserialize($get_csv); //var_dump($csv_list); export('test.csv',$csv_list); } header("location:javascript://history.go(-1)"); ?> <html> <!--以下html--> 前のページにリダイレクト php header("location:javascript://history.go(-1)");
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Php】PDOでdatabaseに接続する(4)

初めに PDOについて学習した内容のoutput用記事です。 ※内容に間違いなどがある場合はご指摘をよろしくお願いします。 ※こちらの記事はあくまでも個人で学習した内容のoutputとしての記事になります。 前回の記事: https://qiita.com/redrabbit1104/items/2668e56d4c058221388e https://qiita.com/redrabbit1104/items/8c5bb2b364347915a0f1 https://qiita.com/redrabbit1104/items/9b5a01b81a21f266a9bb beginTransaction() PDOクラスにあるメソッドでsql文によるデータの取得、更新、削除などの処理を開始するメソッド。また、オートコミットモードをoffにしてくれます。戻り値はtrueかfalse。 $pdo->beginTransaction(); //トランザクションの開始 commit() PDOクラスにあるメソッドでbeginTransaction()メソッドによって開始された処理を確定します。また、オートコミットモードをonにしてくれます。戻り値はtrueかfalse。 $pdo->commit(); //処理の確定 rollback() PDOクラスにあるメソッドでsql文が何らかの問題によって実行されずに失敗した時に、sql文の処理を取り消し元通りに戻すメソッド。戻し値はtrueかfalse。 $pdo->rollback(); //処理のキャンセル 使ってみる 前回のsql文にtransactionの記述を追加します。処理が成功した場合と失敗した場合に分けるため、try catch文を使います。 $pdo->beginTransaction(); //トランザクションを開始 try { //sql処理 $sql = 'select * from accounts where user_id = ?'; //疑問符place holder $stmt = $pdo->prepare($sql); //sql文を実行する準備を行う。戻り値はPDOStatement $stmt->bindValue(3, 1, PDO::PARAM_INT); //値の紐付け $stmt->execute(); //実行 $pdo->commit(); //処理の確定 $result = $stmt->fetchall(); var_dump($result); } catch (PDOException $e) { $pdo->rollback(); //処理のキャンセル echo $e; } 処理が成功した場合(commit) sql文によるデータの処理がうまくいった場合には次のようにブラウザーに表示されます。 処理が失敗した場合(rollback) sql文の実行に失敗した場合、rollbackによって元通りにします。今回はわざとデータベースに無いデータを取得するsql文で試してみました。 参考サイト https://www.php.net/manual/ja/pdo.begintransaction.php https://www.php.net/manual/ja/pdo.commit.php https://www.php.net/manual/ja/pdo.rollback.php https://blog.tokumaru.org/2015/05/blog-post.html
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Amazon Linux環境でSupervisorを使ってLaravel Queueを動作させる方法

この記事は私自身のmediumにも記載されています。 Laravel Queue work with supervisor on AWS EC2 1. Supervisorをインストールする Amazon レポジトリーにはsupervisorが入っておりません。 なのでepelレポジトリーを使ってインストールする必要があります。 sudo yum --enablerepo=epel install supervisor 2. supervisorをスタート sudo service supervisord start Redirecting to /bin/systemctl start supervisord.serviceこのメッセージが表示されたらインストール成功です。 3. supervisor設定ファイル修正 supervisorにworkerを追加するため、設定ファイルを修正します。 sudo vi /etc/supervisord.conf 下記を追記しましょう。 [program:worker] command=php /project-home/artisan queue:work process_name=%(program_name)s_%(process_num)02d numprocs=2 autostart=true autorestart=true user=root redirect_stderr=true stdout_logfile=/project-home/storage/logs/worker.log worker.logファイルをログパスに追加することを忘れないでください。 touch /project-home/storage/logs/worker.log 4. supervisor設定ファイルの読み込み 修正された設定ファイルを読み込ませるため、下記コマンドを実行します。 sudo supervisorctl reread 正しく入力したら、このようなメッセージが表示されます。 worker: available 5. supervisor再起動 設定を適用させるためにsupervisorを再起動しましょう。 sudo service supervisord restart workerが動作されているのか確認しましょう。 sudo supervisorctl status 下記のようなメッセージが表示されます。pidとuptimeは私のメッセージと違うはずです。 worker:worker_00 RUNNING pid 1043936, uptime 0:00:10 worker:worker_01 RUNNING pid 1043937, uptime 0:00:10 6. supervisorをインスタート再起動時にスタートするように設定する sudo chkconfig supervisord on 終わり!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む