2016/11/03 PHPカンファレンス 2016

仕事で使っているPHPアプリケーションをPHP7 beta1で動かしてみたらそのままでは動きませんでした。 私が実際にはまった点を紹介します。 なお、PHP7の変更点についてはhnwさんの記事に詳しく網羅されているのでご一読ください。 PHP7で変わること - hnwの日記 Apacheのモジュール名が変わっていた ApacheにPHPを組み込むためのモジュール(俗にいうmod_php)のモジュール名・ファイル名が変更になっていました。 LoadModule php5_module modules/libphp5.so ↓ LoadModule php7_module modules/libphp7.so memcache extensionがインストールできない PHPからMemcachedを使うためのExtensionには2つあります。 memcache memcached memca
GHOST脆弱性について、コード実行の影響を受けるソフトウェアとしてEximが知られていますが、PHPにもgethostbynameという関数があり、libcのgethostbyname関数をパラメータ未チェックのまま呼んでいます。そこで、PHPのgethostbynameを用いることでPHPをクラッシュできる場合があるのではないかと考えました。 試行錯誤的に調べた結果、以下のスクリプトでPHPをクラッシュできることを確認しています。CentOS6(32bit/64bitとも)、Ubuntu12.04LTS(32bit/64bitとも)のパッケージとして導入したPHPにて確認しましたが、phpallで確認した限りPHP 4.0.2以降のすべてのバージョンのPHPで再現するようです。なぜかPHP 4.0.0と4.0.1では再現しませんでした。 <?php gethostbyname(str_
先日社内でJenkinsについての勉強会を行ないました。 勉強会を行った際に、JenkinsでPHPプログラムをデバッグしてみましたので 今回はJenkinsを用いてPHPプログラムをデバッグするまでの設定方法について書きたいと思います。 PHPでJenkinsを使ってみたいが、設定がわからないという方は参考にしてください。 Ⅰ:環境 以下の環境で設定を行ないました。 ・OS:Centos6 ・PHP:5.3 ・フレームワーク:ZendFramework ・JenkinsURL:http://jenkins.example.com:8080 (URLはJenkinsをインストールしたマシンのアドレスに変更してください) Ⅱ:サーバ上に準備するもの 1:必要なソフト一覧 ①:Phing phpcs,phpmd,phpcpd,phpDocumentor,phpunitを一括管理することができる
PHPカンファレンス関西2014で「PHPコードではなくPHPコードの「書き方」を知る」を発表してきました。 写真提供:久岡写真事務所 別トラックに人気セッションがひしめく中、多くの方に聴いて頂き、ありがとうございましたm(_ _)m 発表内容 PHP 中級者(中級がどこかというのはありますが)を目指す初心者の方を対象に、FizzBuzz のコードを、関数にまとめて、クラス化するというのをライブコーディングで行いました。 また、関数にまとめた段階で、自動テストを書いて、実行結果を目で確認するのではなく、テストを実行して確認するというスタイルを取りました。 発表資料は以下です。 コードを書きながら進めていく形なので、資料だけでは少し伝わらない部分があるかもしれません。 デモで書いた PHP コードは、GitHub で公開しています。Sample1, Sample2 とディレクトリが分かれてい
どこ言ってもネット系スタートアップはエンジニアの募集に苦労している話を聞く。 聞くと応募が全然来ない、ということらしい。 しかしその一方で、ネット系のテクノロジはコモディティ化のスピードが早いため、自分のスキルが無効化されてしまうんじゃないかと戦々恐々としている人たちがいる。 不安に思うぐらいなら、それなりの人数がいるハズで、危機感なり向上心(?)を持った人がいて、うまく出会えれば、採用可能性があるってことだよね。 …の割にエンジニアの採用に困っている声が絶たないのは何故だろう。 仮説としては、 ・求めるスキルに不整合があって、応募したくない。 ・求めるスキルに不整合があって、応募があっても採用できない ・スタートアップだと給料が下がるんじゃないか?!と思って応募できない ・スタートアップに興味が無い。不安定だし。 ・自分の実力ではスタートアップは無理じゃないかと思っている。 ・実はエンジ
昨夜に、魔法少女アパッチ☆マギカ攻撃を観測しました。魔法少女アパッチ☆マギカとは、PoCのソースコードに Apache Magica by Kingcope とコメントされていることに由来しています(というか、私がそう訳しましたw)。 これは10月29日にPoCが発表されたPHP-CGI攻撃(CVE-2012-1823)の変種です。従来のPHP-CGI攻撃は、CGI版PHPが動作する環境で、PHPスクリプト(中身はなんでもよい)に対する攻撃でしたが、魔法少女アパッチマギカの方は、/cgi-bin/に置かれたPHP処理系(php-cgiなど)に直接攻撃するものです。 CGI版PHPを設置する方法は複数ありますが、よく使われる方法としてApacheのリダイレクトによりPHPスクリプトをPHP処理系に実行させる方法があります。この場合、/cgi-bin/php-cgiなどとしてPHP処理系を公開
今回はPHPマニュアルに載ってるソケットサーバーのサンプルを少し書き換えて、コメント付け。 1って付けちゃったよ。 たぶん連載ものになる予定。 「JAVAやRubyで良いじゃん」ってのは禁句です。 人には色々事情があるんです。 で、ソケットプログラミング。 うん、さっぱりわからん。 誰もやらないのか、PHPでソケットプログラミングをする情報が非常に少ないのでPHPマニュアルのサンプルみながら少し書き換えてコメントふってみた。 結構いいかげんだけど、それは適当にメモなんで。 <?php // エラーのタイプ error_reporting (E_ALL); // サポートされる全てのエラーと警告 // スクリプトが実行可能な秒数を無制限に設定 set_time_limit (0); // 出力関数のコールが行われるたびに自動的にフラッシュ操作が行う ob_implicit_flush ();
この記事はPHP Advent Calender 2012の2日目の記事になります、詳細は以下をどうぞ。 PHP Advent Calender 2012 フレームワークやCMS的な記事が多いので、あまり参考例のないTIPSを書きたいと思います。 PHPでTCPサーバを立ててみる PHPでTCPなサーバを作るとなると、socket関数やfsockopenなどを使った例を多く見かけます。 PHPというよりかはLinuxなネタになってしまいますが、ここではxinetdを使った例を書いてみたいと思います。 xinetdとは? 今回は、スーパーサーバーと呼ばれる xinetd の設定方法について説明していきます。スーパーサーバーとは、ポート監視用のデーモンプログラムで、あるポートに対してアクセスがあると、設定ファイル (/etc/xinetd.d/ 等) を元にポートに対応したサービス (ftp
PHPにはすごく便利なライブラリにGDライブラリというものがあります。 用途は主に画像関連の処理!! というわけでGDライブラリを用いて画像の色を取り出し、解析を行なっていきます!! そもそも GDライブラリ 使う関数とその説明 実装 このような流れで説明していきます。 そもそも なんでこれをやろうと思ったかを少し。 このブログで前回ルービックキューブの実装をPHPでしてみた~ルービックキューブクラス~ - nigoblogルービックキューブについてブログを書きました。 それで思いついたアプリケーションが 「ルービックの写真から解法を導くアプリケーション」 を作ろうと思ったわけです。 そのアプリケーションの流れはこんな感じ バラバラのルービックキューブの写真を取る(3面) その画像を解析し、ルービックキューブがどのような状態かを判断 解くまでの手順を表示 使った人は簡単にルービックキューブ
PHPのextensionにはPHP extensionとZend extensionという2種類があります。これらの違いが何なのか、PHPの実装レベルから調べてみました。 PHPのextensionについて PHPのextensionには2種類が存在します。これらは次のようにphp.iniでロード指定する構文が異なります。 extension=extension.so zend_extension=/path/to/extension.so 本稿では「extension=」でロードされるものをPHP extension、「zend_extension=」でロードされるものをZend extensionと呼びます。これらはPHPのソースコード中ではそれぞれmoduleとextensionと呼ばれているので注意してください。 代表的なZend extensionとしてはXdebugとZend
BaïkalはPHP製、GPL v3のオープンソース・ソフトウェアです。 社内での情報共有の基礎になるのがスケジュールやアドレス帳の共有です。外部サービスを使っても良いですが、社内でCalDAV/CardDAVサーバを立ち上げるならば採用したいのがBaïkalです。 インストールを開始します。ウィザードに沿って進めていくのみです。データベースはMySQLの他、SQLiteも選択できます。 ダッシュボードです。まずユーザを追加します。 格好いいUIでツールチップも表示されてとても入力しやすいです。 ユーザに紐づいたカレンダーが自動的に生成されます。 こちらはアドレス帳です。 Webベースの管理画面も備わっていますが、基本的な利用は全てクライアントソフトウェアから行います。iPhoneやMac OSX、Thunderbird、Androidなどの多様なデバイスがCalDAV/CardDAVをサ
Medoo - The Lightest PHP database framework to accelerate development 軽量で便利に使えるPHP用DB操作ライブラリ「Medoo」 SQLを書かなくてもメソッドでselect, insert, delete, update 等ができてコードも読みやすくなるライブラリです。 使うには1ファイルをincludeするだけでつかえます コード例。SQLをかかなくてすみ、インジェクション対策機能もあるらしいです 軽量かつ1ファイルなので簡単に導入できるので、ちょっとDBを使おうっていう場合に、MDB2等を使いたくない人は使ってみても良いかも 関連エントリ レイヤー機能による画像合成機能やサムネイル生成等が超簡単に行えるPHPライブラリ「PHPImageWorkshop」 Google,Facebook,Twitter,Tumblr等
脆弱性の発生するメカニズム 脆弱性の原因はlibraries/mult_submits.inc.php の以下の部分です。 case 'replace_prefix_tbl': $current = $selected[$i]; $newtablename = preg_replace("/^" . $from_prefix . "/", $to_prefix, $current); 上記再現手順の場合、preg_replace関数の呼び出しは以下の引数となります。 preg_replace("/^/e\0/", "phpinfo();", "test"); preg_replace関数(PHP5.4.6以前)の第1引数はバイナリセーフでないため、NULLバイト以降が無視され、結局以下の引数で呼び出されたのと同じになります。 preg_replace("/^/e", "phpinfo();
4月22日追記。細かい表現、データの追記、リンクを修正しました。Laravel の作者による Laravel 4 とSymfony 2 の比較はこちらの記事をご覧ください。 2013年においてもっとも注目すべき PHP フレームワークとして Laravel を挙げる。 執筆時点で Laravel の知識はほとんどないが、新しいプロジェクトでありながら、英語圏においてさまざまなチュートリアルが書かれおり、熱烈なファンを獲得したと見られる。ほかの PHP フレームワークの開発プロジェクトが抱えている将来の課題を考慮すると、Laravel を学ぶ価値はあると考えられる。 4月21日の時点で GitHub のスターの数は3971であり、2000年代後半からプロジェクトが存在していた CakePHP(3741) および Zend Framwork 2 (3905)を超え、PHP フレームワークとして
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く