#author("2024-04-10T15:08:04+09:00","default:irrp","irrp") →言語・開発環境 →Webアプリ開発 →Amazon Web Service #contents *話題 [#x46579f3] -[[PHPの時代は終わった? プログラミング言語のランキングで、2001年以来の最低シェアを記録【やじうまWatch】 - INTERNET Watch>https://internet.watch.impress.co.jp/docs/yajiuma/1583089.html]] 2024.4 -[[Javaだらけの頭でPHPに出会うとこうなる - NRIネットコムBlog>https://tech.nri-net.com/entry/freshman_meets_php]] 2024.1 -[[Visual Studio CodeでWSL上のPHPをデバッグ – We are ACORN!>https://acorn.jpn.org/357/visual-studio-code-php-xdebug/]] 2019 -[[nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する - Qiita>https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc]] 2016 -[[php-fpm ってなんだっけ?(個人備忘録) - Qiita>https://qiita.com/hamaa-affix/items/710f93d239637c565328]] 2020 -[[PHPとJavaのWeb開発における違い3選 - NRIネットコムBlog>https://tech.nri-net.com/entry/differences_between_php_and_java]] 2022.11 --DTOによる階層化アーキテクチャの実現 --NULLの扱いの違い ---PHPの場合は型の扱いが曖昧なため、nullは’’であり0でもあります。 ---このためPHPでの開発に慣れ親しんだ人間がJavaの開発を行う際にNULLの扱いの考慮が漏れてしまう可能性があります --Tomcatの前にNginxの配置 ---PHPはスクリプト言語のためNginxやApacheなどのWebサーバ上で動きます。しかし、Javaはコンパイラ言語でありWebアプリケーションとして動かすためにはTomcatなどのサーブレットコンテナを立てる必要があります。Tomcatの前にNginxを立てる場合は、勿論ですが両者の間でのデータ通信が必要となります。 -[[プログラミング言語の優秀さと道具としての評価は別>http://d.hatena.ne.jp/kwatch/20100613/1276385931]] 2010.6.13 --言語としての優秀さと道具としての評価は別の話ということだよね。これは言語の速度とアプリケーションの速度とは別の話であるのとよく似ている。Ruby や Python はプログラミング言語としてはすごくよくできているけども、Web アプリケーションを作る道具としての評価は、ワシからみると PHP とそれほどの差はない -[[Delphi for PHPでExcel帳票を作ろう>http://www.atmarkit.co.jp/fcoding/articles/d4php/03/d4php03a.html]] 2009.11.25 -[[そろそろPHPerにとどめを刺しておくか>http://e-arrows.sakura.ne.jp/2009/11/phper.html]] 2009.11.4 --symfonyを使わなきゃいけないほどの大規模アプリを作るんだったらPHP以外の言語にしようってこと。 -[[PHPのSession Adoptionは重大な脅威ではない>http://d.hatena.ne.jp/ockeghem/20090515/p1]] 2009.5.16 -[[FirePHPがますます便利になっている件>http://phpspot.org/blog/archives/2009/04/firephp.html]] 2009.4.14 -[[Webデザイナが知っておくべきPHPセキュリティ>http://builder.japan.zdnet.com/sp/php-for-desinger-2008/story/0,3800085347,20371133,00.htm]] 2008.4.11 -[[PHPでのスクレイピングに役立つライブラリ>http://dxd8.com/archives/85/]] 2008.3.13 -[[PHPはダメな言語なのか?>http://slashdot.jp/askslashdot/article.pl?sid=08/02/03/0022251]] 2008.2.4 --PHPを仕事で使うときの注意(抜粋) ---内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。 ---開発環境の警告レベルをE_STRICTにする。本番環境ではdisplay_errorsをオフにする。 ---register_globals、magic_quotesはオフにする。 ---プレゼンテーションとロジックを分割すること。ロジックはSimpleTestを使って単体テストすること。 ---SQL文に変数を埋め込むときにはプレースホルダを使う(PDOのprepareとbindParams)。 ---リクエストから取得したパラメータを出力するときはhtmlspecialcharsを使う。 ---関数が長くなったら分割する(composite methodパターンを使おう)。 ---変数を定数として使わない。定数はdefineで定義するか、const宣言する。 ---常に最新バージョンでテストできる環境を作り、サービスイン後もバージョンアップに対応するための予算をとっておく---(サービスイン後にお金をかけたくないなら、PHPは避けるべき)。 ---継承を使うなら、クラス図くらいは書いておく(単にコードを再利用したいだけなら、移譲を検討すること)。 ---各URLにおけるパラメータとその閾値を文書化すること。パラメータの閾値の境界線についてソースレビューし、テストすること。 ---既存のフレームワークを学習することに投資すること(学習コストを嫌って自己流のフレームワークを作ることは、バグを作りこむことになるのでかえってコスト高になる)。 ---PHPしか使えない作業者の成果物はこまめにレビューすること。 ---コピー&ペーストプログラミングの匂いを発見したら、そのコードを書いた人にプログラミングの基礎を教えること。 ---リファクタリングの時間をスケジュールに入れること。 ---require/includeを条件文や関数宣言の中に記述しないこと。 -[[PHPがいかにダメな言語か>http://www.rubyist.net/~matz/20080126.html#p04]] 2008.1.26 --いろんなものがfalseだったりするせいで、新たな比較演算子「===」が必要 --hashやlistがobjectが区別できない --オブジェクト指向機能が壊れている --lambda(無名関数)がない。create_functionはlambdaじゃない --short_open_tagsやらsafe_modeやらregister_globalsがonになってるかもしれない --一貫性のない名前(str_replace,strlen,parse_strとか) --引数の順番がわかりにくい(in_arrayとかstrposとか) --strpos('abcd','a')は0を返すが、0は偽である --PHPで書かれたたくさんのアプリがあるがどれもHTMLとロジックが分離されてない(本当?) --「PHPは初心者に学びやすい」と言われる。確かにそうかもしれないが、 おかげでどれだけのSQLインジェクションやらXSS脆弱性やら、 ひどいコードが放置されていることか --グローバル。使うんじゃないってば。 -[[なぜPHPアプリにセキュリティホールが多いのか>http://gihyo.jp/dev/serial/01/php-security]] --[[リモートファイルインクルード脆弱性ほか>http://gihyo.jp/dev/serial/01/php-security/0001]] *Tips [#o74013ef] -[[アクセスされたブラウザ名をPHPで判別する方法 - Qiita>https://qiita.com/sanogemaru/items/9b72fb18b2ef99d33bfa]] 2019 // 判定するのに小文字にする $browser = strtolower($_SERVER['HTTP_USER_AGENT']); if (strstr($browser , 'firefox')) { echo('ご使用のブラウザはFirefoxです。'); } -[[PHPの500エラーを解消させる!原因の最短解説>https://www.sejuku.net/blog/77760]] 2018 -PHPのバージョンをLinuxコンソールで確認したい場合、Linuxコンソールで php -v -[[知っとくと便利なPHPのテクニック9つ>http://phpspot.org/blog/archives/2011/03/php_130.html]] -[[PHPの開発効率化!VSCodeでDockerコンテナに入って、Xdebugでデバッグする設定&使用方法 - Qiita>https://qiita.com/ryamate/items/74c57a290b78c812f089]] 2022 -[[PHPでのデバッグ方法>http://techblog.yahoo.co.jp/cat207/how_to/php/]] -[[すごいリロード対策>http://itpro.nikkeibp.co.jp/article/COLUMN/20070910/281585/]] --確認画面でチケットを発行し、セッションに保存しておきます。同時に完了画面へチケットがPOSTされるよう、hiddenにセット。こうして完了画面へ遷移させます。 --(いわゆるトランザクション・トークン) -[[PHPExcel紹介記事>http://journal.mycom.co.jp/articles/2009/03/06/phpexcel/index.html]] -[[画像のリサイズ、切抜きができるclass.image.php>http://phpspot.org/blog/archives/2008/02/phpclassimageph.html]] -[[Jpeg画像のリサイズ>http://code.nanigac.com/source/view/206]] -[[有効なドメインか確認する>http://code.nanigac.com/source/view/193]] -[[include と require の違い>http://code.nanigac.com/source/view/172]] -[[PHPで使える暗号関数>http://code.nanigac.com/source/view/169]] -[[URLを短くするサービスを提供できるPHPスクリプトPhurl>http://phpspot.org/blog/archives/2009/01/urlphpphurl.html]] -[[10日で覚えるPHPの基礎>http://c-brains.jp/blog/wsg/08/04/07-144033.php]] -[[PHPマニュアル>http://www.php.net/manual/ja/index.php]] -[[PHPセキュリティミステーク>http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/]] *AWS EC2とPHP [#scdb4dad] -単純に yum install php すると ver.5.4 がはいってしまう問題がある。2021.9 -[[AWS EC2(Amazon Linux)にPHP7.4をインストール>https://qiita.com/nagahama/items/2fdc820791bee5d564ca]] 2021.4 -[[AWSにてPHPの最新バージョンをインストールできない>https://teratail.com/questions/172421]] *Windows2003+IIS6でのインストール方法 [#z6c25811] -CGIの仕組みを使って動作させる方法と、ISAPIの仕組みで動作させる方法がある。 ISAPIの方がパフォーマンスが良いのでそちらを採用する。 -まずここへ行く --http://www.php.net/downloads.php -ダウンロードはZIPになっているものとインストーラになっているものがあるが、 インストーラ版はCGIで動かすものしか入ってないのでZIPの方を取ってくる --「PHP 5.1.4 zip package [8,919Kb] - 04 May 2006」をクリック -ZIPの中身を適当なフォルダに展開する。仮にd:\PHPとする -D:\PHPにパスを切る。 -php.iniの設定をする。最低限、extention_dir と doc_rootの設定は必要らしい -IISで公開するフォルダに対し、IUSR_XXXでスクリプト実行できるように設定する。 -IISのISAPIフィルタに php5isapi.dll を指定する。 -IISマネージャの「Webサービス拡張」に php5isapi.dll を登録する。 -IISマネージャのサイトのプロパティの「ドキュメント」タブの「規定のコンテンツページ」にindex.phpを追加する。 -詳しくはこちらを見よ --http://jp2.php.net/manual/ja/install.windows.php *公式 [#i249de71] -https://www.php.net/