Category Archives: PHP カテゴリ "PHP"のRSS  

[PHP]Laravelからtwitter bootstrapを使う方法

2017年4月29日 (カテゴリ: PHP:)

PHPからbootstrapを使用する場合、bootstrapのサイトからcss/jsをダウンロードしなくても、composer経由でダウンロードすることが可能です。 bootstrapはベンダー名がtwbsで管理されているので、具体的には以下のコマンドでダウンロード可能です。 composer require twbs/bootstrap この場合、ダウンロードされたファイルはvendorの下に入るので、DocumentRootから見えない場所に設置されてしまいます。Laravelフレームワークを使用している場合、artisan asset:publishコマンドを使用することで、Webサー…


続きを読む

[PHP7.1]タイプヒンティングで関数の戻り値にvoidを指定したときのふるまい

2017年4月16日 (カテゴリ: PHP:)

PHP7.1では、タイプヒンティングで関数の戻り値で値を返さないことを明示するために、voidの指定が可能です。 voidを指定したときに、正しく実行できるコード、エラーが出るコードを確認してみました。 下記はOKパターンです。 <?php // OK: return文に戻り値を指定しないコードは正しく実行できる function foo_ok2() : void { return; } // OK: return文自体を書かなくてもよい function foo_ok1() : void { // do nothing. } 一方、下記コードはNGです。 // NG: “void”のタ…


続きを読む

[PHP]関数の戻り値にnull値の許容をタイプヒンティングさせる方法

2017年4月14日 (カテゴリ: PHP:)

PHP7では、関数の戻り値の方を制限するためのタイプヒンティング機能が追加されました。 PHP7.1では、このタイプヒンティングに対して、さらに”指定された型、もしくは、null”が返されること強制する、null許容型のタイプヒンティング機能が追加されました。 例えばstring or nullのreturnを強制したい場合、下記サンプルコードのように”?string”先頭へ”?”を付ければOKです。 <?php function foo($option) : ?string { if ($option == 1) …


続きを読む

[PHP]無名関数を定義して、即時実行したい場合は?

2017年4月12日 (カテゴリ: PHP:)

javascriptでは、オブジェクトの名前空間の問題により、無名関数を作ったうえで、作成した無名関数を即時実行したい場合が多くあります。 phpで同様の事を行いたい場合、どのような記述を行えばよいでしょうか? php7.0以降の場合は、javascriptと同様に下記のコードで実行することもできます <?php (function() { echo ‘hello world’; })(); php5.xのバージョンしか使えない場合は、上記のコードほどシンプルではありませんが、下記のコードで無名関数を即時実行可能です。 <?php call_user_func(function()…


続きを読む

[PHP]PHP7実行時、VCRUNTIME140.dll is missingエラーが出るとき

2017年4月10日 (カテゴリ: PHP:)

windowsでphp7を実行したとき、下記のエラーが出る場合があります。 Unable to start the program as VCRUNTIME140.dll is missing on your computer. Try reinstalling the program to fix this problem. 無いと出力されているVCRUNTIME140.dllですが、これはVisual C++ Runtime14.0の意味です。 ダウンロードページを見ると、下記の通りたしかにランタイムが必要との記載があります VC11, VC14 & VC15 More recen…


続きを読む

[PHP]composerのインストールでUnable to find the wrapper “https”エラー

2017年4月8日 (カテゴリ: PHP:)

PHPでcomposerをインストールしようとしたとき、以下のようにUnable to find the wrapper “https”エラーが出る場合があります。 >php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);” Warning: copy(): Unable to find the wrapper “https” – did you forget to enable it when you configured PHP? in Command line code on line 1 W…


続きを読む

XDebugを有効化したときのメモ

2017年2月23日 (カテゴリ: PHP:)

chromeにextensionを追加する インストール先 Xdebug helper インストールされたextensionのアイコンを右クリック -> オプションを選択する IDE keyの項目を、使っている開発環境に合わせる PHPの環境を作る XDebug.dllをダウンロードする https://xdebug.org/download.php php.iniに下記の定義を追加する [PHP_XDEBUG] report_zend_debug = 0 zend_extension = “C:\home\php\xdebug\php_xdebug-2.5.0-5.6-vc11-x86_64…


続きを読む

[FuelPHP]複数DBへ接続時、エラー”Database type not defined in”が出るときにチェックする事

2017年2月20日 (カテゴリ: PHP:)

FuelPHPでは、DBへの接続定義を, fuel/app/config/$ENV/db.phpで管理されています。 インストール直後の開発環境では、以下のようになってます。 return array( ‘default’ => array( ‘connection’ => array( ‘dsn’ => ‘mysql:host=localhost;dbname=fuel_dev’, ‘username’ => ‘root’, ‘password’ => ‘root’, ), ), ); これを、複数DBへの接続対応するために、例えば’default2…


続きを読む

[FuelPHP]Windowsだと問題ないのにLinux上だとClass not foundエラーが出るときにチェックすること

2017年2月16日 (カテゴリ: PHP:)

Windowだとクラスのロードが問題なく行えるのに、Linux上だとクラスのロードでエラーになる場合は、ファイル名の大文字・小文字のルールが間違っている可能性が高い(主に開発環境はWindowsで本番環境がLinuxだと気づきにくい)。 例えば、Model/ItemMst.phpという名前でモデルを作っている場合、Windowsだとファイル名の大文字小文字を無視するのでphpファイルの読み込みが行えるが、LinuxだとModel/itemmst.phpを読みに行こうとしてエラーになってしまう。 newで指定されだクラス名に対して、実際に何のファイル名でクラスローダがロードを試みているか確認した…


続きを読む

[php]phpQueryをcomposer経由でインストールする

2017年2月15日 (カテゴリ: PHP:)

PHPからwebページのスクレイピングを行うための有名なライブラリにphpQueryがあります。 phpQueryを使用すると、htmlに対してjQueryのようなセレクタで、取得したいタグの検索などが簡単に行えるので便利です。 今回はこのphpQueryをcomposer経由でインストールしたうえで、簡単な動作確認を行ってみました。 作業手順 phpQueryパッケージをインストールする まず、composer self-updateコマンドでcomposer自身のアップデートを行ったうえで、requireコマンドを使用してphpqueryパッケージのインストールを行います。 compose…


続きを読む

[FuelPHP] composer updateでfuelphp/upload 2.0.6のアップデートエラーが出るとき

2017年2月14日 (カテゴリ: PHP:)

FuelPHPのフレームワーク使用時にcomposer updateを実行した際、下記のエラーがでてパッケージをアップデートできない場合があります。 > composer update Your requirements could not be resolved to an installable set of packages. Problem 1 – fuelphp/upload 2.0.6 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system. …


続きを読む

[php]composer self-updateでエラー[Composer\Downloader\TransportException]が出るとき

2017年2月13日 (カテゴリ: PHP:)

composerを使用していてcomposer self-updateコマンド実行時に下記のエラーが出る場合があります [Composer\Downloader\TransportException] Your configuration does not allow connections to http://getcomposer.org/versions. See https://getcomposer.org/doc/06-config.md#secure-http for details. このエラーが出る理由ですが、composerはファイルのダウンロードをSSL対応したサイトから…


続きを読む

[php]composer self-updateでエラー[required for SSL/TLS protection]が出るときの対処法

2017年2月12日 (カテゴリ: PHP:)

PHPでcomposerのアップデートを行った時、opensslのライブラリでSSL/TLS protectionエラーが出る場合があります。※下記の例の”composer self-update”は、windowsの場合は環境によって”php.exe composer.phar self-update”になる場合もあります。 > php.exe composer.phar self-update [RuntimeException] The openssl extension is required for SSL/TLS protect…


続きを読む

‘cURL error 60’エラーが出たときの対処法 ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate’

2017年2月11日 (カテゴリ: PHP:)

cURLを使用したプログラムでhttpsのサイトにアクセスしたとき、下記の例外が発生しました。 この問題を解消するために、調べた事・行ったことののメモを書いておきます。 環境: Windows10, PHP7.0.14, GuzzleHttp経由でcURLライブラリを利用 Fatal error: Uncaught exception ‘GuzzleHttp\Exception\RequestException’ with message ‘cURL error 60: SSL certificate problem: unable to get local issuer certificat…


続きを読む

[PHP]mcrypt_module_open()でエラー”Call to undefined method”が出るとき

2017年2月6日 (カテゴリ: PHP:)

phpのプログラムで、mcrypt_module_open()メソッドをコールしたとき、Call to undefined method…ワーニングが出る場合があります。 この場合、pho.iniでphp_mcrypt.dllモジュールが読み込まれていない可能性があります。php.iniを確認し、extensionの指定がコメントアウトされていたらコメントを外してください。 ;extension=php_mcrypt.dll ↓ extension=php_mcrypt.dll Windows環境で動作させる場合、PHP5.3以降ではMcryptのライブラリがphp.exeにstatic …


続きを読む

[FuelPHP]DB::query()を使って、SQL直書きでDBアクセスしたい

2016年8月27日 (カテゴリ: PHP:)

FuelPHPでDBをアクセスしたい場合、FuelPHP標準でO/Rマッパや、Model_Crud、クエリビルダー、DB::query()メソッドなど、様々なアクセス方法が用意されています。 簡単なプログラムを作る場合は、O/Rマッパ(ORMパッケージ)などを使ってもよいのですが、データのアクセスが多くなることが予測される場合、DBアクセスが抽象化された形での処理はパフォーマンスが低下する問題が後々出てきてしまいます。 このようなリスクがある場合、SQLを直接かけるDB::query()メソッドを使用すると、抽象化によるオーバーヘッドもないし、DBサーバの実行計画を見ながら詳細なクエリのチュー…


続きを読む

[ロリポップ]MySQLサーバのIPアドレスを調べる方法

2016年5月30日 (カテゴリ: PHP:)

ロリポップのMySQLサーバへSSHトンネリング経由で接続したかったのですが、サーバのIPアドレスが分からなかったので調べてみました。 調査時点で、下記のIPになってました。 mysql501.phy.lolipop.jp : 157.7.105.174 mysql502.phy.lolipop.jp : 157.7.106.56 mysql503.phy.lolipop.jp : 157.7.106.57 mysql504.phy.lolipop.jp : 157.7.105.175 mysql505.phy.lolipop.jp : 157.7.106.58 mysql506.phy.lo…


続きを読む

cURLで、エラー”Initializing NSS with certpath: none”出る理由を、ソースから調べてみた

2016年5月6日 (カテゴリ: PHP:)

Linux上で実行するPHPのスクリプト内で、curlを使用したプログラムを書いていたのですが、テスト中に下記のエラーが出力されました。 Initializing NSS with certpath: none Unable to initialize NSS メッセージ通りcertファイルがあるPATHがわからないせいで、初期化に失敗したのだろうとは思っていたのですが、このエラーが具体的にどの条件で出力されるか気になったので、curlのソースを確認してみました。 該当のメッセージでgrepしてみると、エラー出力をしているのは”curl/lib/nss.c”でした。関数…


続きを読む

[Google APIs Client Libraries]認証処理でOAuth2 access tokenの保存エラーが出たときの対処法

2016年5月5日 (カテゴリ: PHP:)

Google APIs Client Librariesを使用して、Googleのサーバへ対してOAuth2認証を行う際、SDKは認証のアクセストークンを/tmpフォルダに保存しようとします。 レンタルサーバなどで/tmpフォルダに権限がない場合、トークンの保存処理でエラーになってしまいます。 cURL Problem with the SSL CA cert (path? access rights?) このような場合は、下記の処理でトークンの保存先を変更できます。 $config = new \Google_Config(); $config->setClassCon…


続きを読む

[GoogleAnalytics API]Googleサーバへの接続タイムアウトを指定するには

2016年5月4日 (カテゴリ: PHP:)

Google Client APIを使用して認証を行う際、google提供のSDK内ではGoogle_IO_Curlというクラスを利用しています。 この中で、接続タイムアウト時間を変更するには、下記のコードでオプションを指定します。 接続するまでのタイムアウトを指定する場合 $client = new \Google_Client(); $client->setClassConfig(’Google_IO_Curl’, ‘options’, array(CURLOPT_CONNECTTIMEOUT=>10)); 応答データが返ってくる…


続きを読む