タグ

phpに関するmikage014のブックマーク (348)

  • PHPのパッチバージョンを上げたらひどい目にあった話 - TORANA TECH BLOG

    バックエンドエンジニアのクラシマです。 2021/08/25(水)に、番サーバのPHPを7.4.21 -> 7.4.22にバージョンアップしました。 renovateでプルリクエストが作られるので、追っかけるだけです。 tech.torana.co.jp AMIは前日に作ってあり、当日はLaunchTemplateの向き先を変更するためにterraform applyして、AutoScalingGroupからインスタンスの更新をするだけ。 や~便利になったなぁ、なんて作業してたらSlackが大騒ぎに・・・ 大惨事の一コマ 切り戻し! 急いで切り戻し!と判断したのは良いものの、まさかPHPのバージョンアップ起因だとはその時は思いもよらず。 当日deployしたアプリケーションや、Aurora MySQLの設定変更などを順次戻していきますが、一向に回復せず。 stg環境でも動作が同じだったの

  • 【PHP8.2】動的プロパティが禁止される - Qiita

    $dt = new DateTime(); $dt->hoge = 1; var_dump($dt->hoge); // 1 PHPでは未定義のプロパティに値を突っ込むと、特に何の抵抗もなくプロパティが生えます。 しかし、他の多くの言語ではこのような動作にならず、未定義プロパティを突っ込もうとするとエラーになります。 ということでこれを禁止しようというRFCが提出されました。 以下はDeprecate dynamic propertiesのRFCの紹介です。 PHP RFC: Deprecate dynamic properties Introduction 宣言されていないプロパティに書き込みを行うと、PHPでは何もエラーが出ずに動的にプロパティが作成されます。 現代のコードにおいて、これが意図的に行われることはほとんどありません。 このRFCでは、動的プロパティを非推奨とし、将来的に削

    【PHP8.2】動的プロパティが禁止される - Qiita
  • 【PHP8.1】PHP8.1の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2021/11/26にリリースされました 2021/07/20、PHP8.1がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2021/11/25にPHP8.1.0がリリースされる予定です。 というわけでPHP8.1で実装されるRFCを見てみましょう。 RFC Fibers 賛成50反対14で受理。 Fiberです。 PHPで非同期コードを書けるようになります。 $fiber = new Fiber(function (): void { $value = Fiber::suspend('fiber'); echo "レジュームした。$value: ", $value, "\n"; }); $value = $fiber

    【PHP8.1】PHP8.1の新機能 - Qiita
  • 【PHP8.0】PHP8.0の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2020/11/26に リリースされました 。 2020/08/04にPHP8.0がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2020/11/26にPHP8.0がリリースされる予定です。 というわけでPHP8.0で対応することが決まったRFCを見てみましょう。 RFC JIT 賛成50反対2で受理。 PHP8の目玉、JITです。 PHPをネイティブコードにコンパイルし、さらにコンパイルした結果を次のリクエストに使い回すことができます。 速度はOpcacheがオンの状態から平均的に1.3-1.5倍程度、さらにCPUバウンドな処理なら3倍以上という劇的な高速化が見込めます。 Opcache無しからだと、1分かかっていた

    【PHP8.0】PHP8.0の新機能 - Qiita
  • PHP7から定数配列がOPcacheに乗るので巨大配列が使い放題という話 - hnwの日記

    PHP 7.0のリリースから約5年が経過し、そろそろPHP 8.0のリリースも見えてきました。人によっては使い始めて5年目になるはずのPHP 7.xですが、いまだに新しい発見があったりして面白いですね。 稿ではPHP 7.0から入った定数配列に関する性能改善について紹介します。 PHP 5時代は配列の組み立てコストが大きかった プログラミング上のテクニックとして、辞書データを連想配列としてプログラム中に記述し、これを必要に応じて使うというものがあります。たとえば次のコード例を見てみましょう。このような連想配列を持っておけば、プログラム中で国名コードをを扱う際に実在するかをチェックしたり、国名の日語表記に変換したりといった処理ができるわけです。 <?php $country_name = [ 'jp' => '日', 'us' => 'アメリカ合衆国', 'ru' => 'ロシア連邦'

    PHP7から定数配列がOPcacheに乗るので巨大配列が使い放題という話 - hnwの日記
  • 【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita

    $user = null; echo $user->address->country ?? ''; PHPのプロパティは元よりnull安全なので、存在しないプロパティだろうがnullだろうがプリミティブ型だろうがいきなりプロパティを取り出せます。 取れない場合はE_NOTICEが発生しますが、??を使えば黙殺できます。 しかしメソッドはだめです。 echo $user->getAddress()->getCountry() ?? ''; // Fatal error: Call to a member function getAddress() // 1 if (method_exists($user, 'getAddress')) { if (method_exists($user->getAddress(), 'getCountry')) { echo $user->getAddres

    【PHP8.0】PHPにヌルセーフ演算子が導入される - Qiita
  • PHP7.4の新機能その2 - Qiita

    PHP7.4 / PHP7.4その1 / PHP7.4その2 2019/06/13、PHP7.4.0α1がリリースされました。 今後はベータ、RCと完成度を高めていき、7.4.0のリリースは2019/11/28が予定されています。 なお仕様フィックスは2019/07/13で、それ以降は大きな変更は入らないようになります。 逆に言うとそれまでは追加が入る可能性はあるのですが、既にα1も出たことですし、さすがにこれからのタイミングでプロパティ型指定やらアロー関数レベルの大改修が入ることはないでしょう。 ということで前回以降入った新機能や変更点を見てみることにします。 RFC Arrow functions 2.0 賛成51、反対8で受理。 アロー関数です。 // 新構文 $fn = fn($x) => $x + $y; // ↓と同じ $fn = function ($x) use ($y)

    PHP7.4の新機能その2 - Qiita
  • PHPはもうダメだ、PHP万歳! | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) GutenbergとWordPressに関する騒動は、PHPの終焉につながる最新記事です。深呼吸をしてください、みなさん。トロールは無視し、Mark TwainとFidel CastroとPHPとの共通点を見ていきましょう。そして、もっと重要なのは、スタートアップやスモールビジネスにとって、PHPが今でも合理的な選択である理由です。 PHPはいつから廃れ始めたのか “PHPはもうダメだ”といったブログの投稿が、登場し始めたのは2011年のようです(これより古いものを見つけたら、お知らせください)。Mediumや、mushroomsのように突然出現したcoding bootcampsを探し回れば、その唯一の共通点は、みんながPHPを嫌っているか、あるいは単に無視しているかです。どうやら、法外な値段のコー

    PHPはもうダメだ、PHP万歳! | POSTD
  • それでもphp 7.1以降を使うべき7つの理由 - Qiita

    はじめに php 5.xから約2倍の高速化を果たしたphp 7.0,そんなphp 7.0も登場から二年以上が経過し,すっかり枯れた,もとい安心して導入できる段階になりました。 また,昨年末にリリースされたphp 7.2の登場によりphp 5.6.xがサポートされている最後の5.xバージョンとなりました。 そんなphp 5.6.xのサポートも2018年いっぱいで終了することが公式にアナウンスされており,なるべく早く7.xへのマイグレーションを行いたいところです。 では,マイグレーション先は十分に枯れたphp 7.0.xが適切でしょうか? いいえ,せっかくならphp 7.1以上に移行してしまいましょう。 php 7.1以上を使うべき理由 php 7.1以上への移行を勧める理由は,単なるできるだけ新しいものを使おうという考えではありません。php 7.1以上を用いることで得られる利点が遥かに大き

    それでもphp 7.1以降を使うべき7つの理由 - Qiita
  • CakePHP1.3→2.8移行が完了しました | ランサーズ(Lancers)エンジニアブログ

    SREチームの金澤です。 1年以上かけて取り組んできた、CakePHP1.3→2.8バージョンアップが完了しましたので報告いたします。 ランサーズ社のCakePHPの取り組み ランサーズは現在11年目ですが、永らくバージョンアップをしておらず、PHP 5.3 + CakePHP1.3の環境で稼働していました。 2017/2に全社的にバージョンアップを決断し、その後の取り組みをまとめたものが以下になります。 2017.05.26 PHP、CakePHPバージョンアップの決断 2017.06.12 PHPカンファレンス福岡 2017に登壇しました 2017.06.27 PHP, CakePHPバージョンアップに向けてCIで品質を担保・向上していく 2017.09.05 ランサーズのNginx+PHP-FPM化 2017.10.10 PHPカンファレンス2017 に登壇してきました 2017.1

    CakePHP1.3→2.8移行が完了しました | ランサーズ(Lancers)エンジニアブログ
  • go-pear.pharにバックドアが仕込まれていた - Qiita

    半年以内にgo-pear.pharを使った人は必ずチェックしましょう。 2019/01/19 PEAR公式Twitterアカウントからツイート。 このアカウント全然活動してない。 https://twitter.com/pear/status/1086634389465956352 A security breach has been found on the https://t.co/dwKlscDEFf webserver, with a tainted go-pear.phar discovered. The PEAR website itself has been disabled until a known clean site can be rebuilt. A more detailed announcement will be on the PEAR Blog once i

    go-pear.pharにバックドアが仕込まれていた - Qiita
  • LambdaでPHPが動くので、とりあえずWordPressをいれてみた

    Lambdaがカスタムランタイム対応しましたね。PHPのLayerが公開されていましたので、恒例のやつをやってみましょう。 セットアップ LambdaPHPを使う方法は以下のGitHubが参考になります。 PHP La […] セットアップ LambdaPHPを使う方法は以下のGitHubが参考になります。 PHP Layer For AWS Lambda プロジェクトの準備 SAMでデプロイできます。 $ mkdir my-php-app $ cd my-php-app $ touch template.yaml template.yamlは以下のように書きましょう。 AWSTemplateFormatVersion: 2010-09-09 Description: My PHP Application Transform: AWS::Serverless-2016-10-31 Re

    LambdaでPHPが動くので、とりあえずWordPressをいれてみた
  • マルチバイト(全角スペース等)対応のtrim処理

    ワリと需要のある処理だと思いますが、改めてググってみるとあまりマネして欲しくないコードが散見されたため、この記事を書いてみました。 検索結果上位のページのコードをコピペで使ってる人 正規表現の \A と \z や ++ や \p{C} という書き方を知らない人 などに参考にして頂ければ幸いです。 コード function mbTrim($pString) { return preg_replace('/\A[\p{Cc}\p{Cf}\p{Z}]++|[\p{Cc}\p{Cf}\p{Z}]++\z/u', '', $pString); } 解説 \A と \z 文字列の始端 と 文字列の終端 を表すエスケープシーケンスです。 始端と終端を ^ と $ で記述しているものが多いですが、\A と \z を使うようにしましょう。1 正規表現によるバリデーションでは ^ と $ ではなく \A と

    マルチバイト(全角スペース等)対応のtrim処理
  • PHPの脆弱性 CVE-2018-17082 によるキャッシュ汚染についての注意喚起

    エグゼクティブサマリ PHPの脆弱性CVE-2018-17082はXSSとして報告されているが、現実にはXSSとしての攻撃経路はない。一方、Apacheのmod_cacheによるキャッシュ機能を有効にしているサイトでは、キャッシュ汚染という攻撃を受ける可能性がある。 概要 PHPの現在サポート中のすべてのバージョンについて、XSS脆弱性CVE-2018-17082が修正されました。以下は対応バージョンであり、これより前のすべてのバージョンが影響を受けます。ただし、Apacheとの接続にApache2handlerを用いている場合に限ります。 PHP 5.6.38 PHP 7.0.32 PHP 7.1.22 PHP 7.2.10 PHP 5.5以前も対象であり、これらは脆弱性は修正されていません。 脆弱性を再現させてみる この脆弱性のPoCは、当問題のバグレポートにあります。 PHP ::

    PHPの脆弱性 CVE-2018-17082 によるキャッシュ汚染についての注意喚起
  • 米Facebook、「HHVM」でのPHPサポートを終了する方針を発表 | OSDN Magazine

    米FacebookのHHVM開発チームは9月12日、PHPのサポートを段階的に終了することを発表した。HHVMはPHPプログラムを高速に実行する環境として開発がスタートしたが、独自言語「Hack」の誕生やPHP7の登場によってPHPサポートが廃止されることになる。 HHVM(HipHop Virtual Machine)はPHPおよびHackで書かれたプログラムを高速に実行する環境。JITコンパイラを用いて高速な性能を実現しつつ、PHPが提供する開発の柔軟性を維持するのが特徴。PHPはバージョン5、7(一部)をサポートしている。最新版は8月末に公開したバージョン3.28。 HHVMはPHPの高速実行環境としてスタートしたが、現在ではPHPを拡張した独自言語であるHackの実行環境という役割も担っており、PHP5についてはすでに年初にサポート終了を発表している。 今回発表した計画によると、1

    米Facebook、「HHVM」でのPHPサポートを終了する方針を発表 | OSDN Magazine
  • YYPHP#32「PHP7.2変更点、Laravelのスター数がRailsを超える、スキル上達法、最近の便利ツール」 - Qiita

    YYPHP#32「PHP7.2変更点、Laravelのスター数がRailsを超える、スキル上達法、最近の便利ツール」PHPLaravelYYPHP これは2018年3月21日に開催したPHPerイベントYYPHP#32のイベントレポートです。 YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開発ツールを触ってみたり、フレームワークについての情報交換をすることもあります。開催は毎週水曜19:00に高田馬場にて。 クリティカルな何かがあったのか? Laravel 5.5からは7系必須 object型宣言 PHP: 下位互換性のない変更点 - Manual PHP 7.2 Provides Modest Performanc

    YYPHP#32「PHP7.2変更点、Laravelのスター数がRailsを超える、スキル上達法、最近の便利ツール」 - Qiita
  • PHPの開発全般にLaradockを使えばいいんじゃないかという話 - Qiita

    まずLaradockについて LaradockはLaravel(PHP製のWebフレームワーク)用の(開発用)実行環境で、その名の通りDockerを使用した仮想環境です。 これが非常に良く出来ており、Laravel以外のPHP開発でもガンガン使っていけるのではないかと思ったので紹介させて頂きます。 (実際に公式サイトでもLaravel以外でも採用されていると記載されています) Dockerがないと使用できないのがハードルといえばその通りですが、以下の理由からDocker使ったこと無い方にもオススメです。 基的な使い方ならDockerの知識はほぼ不要 Docker自体が有用なのでLaradockをきっかけにDockerを覚えるくらいの気持ちで導入しても損は無い ということでこの記事は以下の方針で書いています。 導入方法については割愛して機能的な部分について紹介 Docker使ったことないよ

    PHPの開発全般にLaradockを使えばいいんじゃないかという話 - Qiita
  • SE歴8年の無職がSilexでサイト構築に挑む - Qiita

    簡単にできるって書いてたからやってみました。 PHPマイクロフレームワークSilexでつくるシンプルWebサイト | | リーテラトバリタブログ ComposerからSilexをダウンロード 書いてあるコードはこちら。 composerというのがイマイチまだ理解しきれてないんですけど、こうやって書いてあるからにはダウンロードしてくれるマンなんでしょう。 あと最初、silexとtwigって書いてあるのに1行しかねえぞ!! とか意味不明なこと思っててすみませんでした。文盲。 並べて書けるんですね。 ただ問題は次。 どこに? 詰まりました。 ダウンロード……するのは、プロジェクトを置く場所?的なところですよね、多分。 どこに作るの? デスクトップ? というわけではないはずなので、空気を読んでプロジェクト用のディレクトリを作成します。 考えてみればこの程度のことをわざわざ書く必要もなかった。 実行

    SE歴8年の無職がSilexでサイト構築に挑む - Qiita
  • シンボリックリンクを用いたアトミックデプロイと opcache と realpath cache - ngyukiの日記

    これまで PHP のアプリケーションのデプロイは rsync でどべーとコードを撒いていました。が、それだと新旧のコードが混在するし Capistrano とかはデフォでシンボリックリンク切り替えでアトミックなデプロイになっているし、周回遅れな感じもしますが今後は似たような方法でデプロイしたいと思います。 releases/ ディレクトリの中にリリースタグでディレクトリを掘ってコードを配置して current を最新のリリースのディレクトリへのシンボリックリンクにします。そして Apache や Nginx でドキュメントルートを current の中の公開用のディレクトリに設定します(/path/to/app/current/public とか)。 /path/to/app/ releases/ 20161213/ 20161224/ 20170101/ current -> relea

    シンボリックリンクを用いたアトミックデプロイと opcache と realpath cache - ngyukiの日記
  • PHPバージョン変更点をピックアップ(5.4.x ~ 7.4.x) - Qiita

    どのバージョンで使えるようになった機能か、探すのに苦労することがあったので、一覧にしてみました。 8.0移行はこちらです PHP 5.2.x から PHP 5.3.x への移行 新機能 名前空間 のサポートが追加されました。 遅延静的束縛 のサポートが追加されました。 ジャンプラベル (制限付きgoto) のサポートが追加されました。 ネイティブクロージャ (ラムダ/無名関数) のサポートが追加されました。 マジックメソッドが二つ追加。 __callStatic() と __invoke() 。 Nowdoc 構文がサポートされました。これは ヒアドキュメント のように動作しますが、シングルクォートで囲まれた文字列として扱われます。 ヒアドキュメント 構文は、静的な クラスプロパティ/定数 を初期化できるようになりました。 ヒアドキュメント 構文は、ダブルクォートを使って宣言できるようにな

    PHPバージョン変更点をピックアップ(5.4.x ~ 7.4.x) - Qiita