たかブログ

webを勉強しています。

画像アップロード、更新 復習(laravel)

画像アップロードについて




画像ファイルはデータ容量などの観点から、直接DBに保存するのは良くない
PHP - データベースに画像を保存するのはありでしょうか?|teratail



なので、シンボリックリンクを貼り付け、public/storage配下に保存させるようにする。

https://promidea.co.jp/archives/2377


basenameメソッドなどを使い、ファイル名のみをDBに保存する。




注意!!


大抵、画像ファイルのみで投稿、更新機能を作ることはないので、
複数のinputタグと同時に投稿、更新することになる


input type=fileは前回情報をvalueなどで保持できないため
そのまま更新すると空で更新されてしまう

なので、コントローラーでする処理としては、
画像をpostしていない場合ですでにDBに登録されている場合、
そのパスを与えること!

DB正規化とカラムの分け方

第1〜第5正規化まで存在する





第1正規化ー>繰り返しグループを分割する(テーブル間をまたぐ情報について)






第2正規化ー>親子関係のグループを分割する(連絡掲示板テーブルを boardとmessageに分けるとか)






第3正規化ー>重複する付加情報をさらに分割する(たとえば住所は、市区町村合併の可能性があるので、都道府県、市、区というテーブルに分け、
ユーザーテーブルでは、都道府県カラム、市カラム、区カラムと分けて作成させる)
その情報に従属するものを分けていくための考え






また、各テーブルには、削除フラグを設け、booleanにすることで、誤って削除した場合に復活できるようにしておくこと





qiita.com




www.amazon.co.jp

laravelプロジェクトを git cloneして表示した際に500エラー 

起こったこと : laravelプロジェクトをgithubからcloneしてきた際に発生したエラー。


composer updateをして、php artisan serve で サーバーを起動できたので、URlで起動してみると、



500エラーでserverが見つかりません、とのこと。






やったこと:

まず、apacheのerror.logと、そのlaravelプロジェクトのstorageのlogファイルを見る。

 apacheの方はよくわからなかったので、laravelの方を見てみると、


 production.ERROR: No application encryption key has been specified.


 というエラーが。




qiita.com



 を参照して、keyを生成する。



 php artisan key:generate



 



 すると file_get_contents(/var/www/html/laravel_project/Match/.env): failed to open stream: No such file or directory



 .envファイルがないといわれたので、見てみると、


 .envファイルではなく .envファイルが、.env.exampleになっている。




 
https://lerie.us/blog/2018/06/16/file_get_contents-var-www-html-blog-env-failed-to-open-stream-no-such-file-or-directory-laravel/




 を参考に、sudo mv .env.example .env






 そして、再びkeyの作成をすると表示が成功する。

apache2でubuntuにサーバーを構築

ローカルの環境で、xamppを使おうとしていたが、 mysqlサーバーとの併用でのエラーが難しく、apache2とnginxを環境として使っていこうと思った。




まえおき https://katurademo.com/Linux/Ubuntu/xampp/startxampp.html




引用: Windowsphp を使う場合は、 xampp を導入して htdocs を localhost としていろいろとプログラムを作成するのですが、Linux ではこのような必要はありません。
サーバーというのは Windows よりも Linux に親和性があるように思います。つまり、Linux では xampp のようなややこしい設定をすることなく、割と簡単にサーバー環境を作ることができます。


apache2のインストール https://katurademo.com/Dicom/cinnamon/apache.html










フィアウォールとSSH


https://qiita.com/sakkuntyo/items/03742bad0f57a4f46b07




サーバIP確認をして、
http://サーバIP/





動作確認
https://www.yokoweb.net/2018/05/12/ubuntu-18_04-apache2-php72/

ディレクトリの権限を自分自身に付与する方法  npmエラー:Unhandled rejection Error: EACCES: permission denied, mkdir '/home/user/.npm/_cacache/index-v5/4f/51'

解決策  所有エラー


自分自身に権限を付与

sudo chown -R $USER:$GROUP ~/.npm











On npm install: Unhandled rejection Error: EACCES: permission denied - Stack Overflow