Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon PHP5.6でSSL通信エラー (2016/07/05)
PHP5.6からOpenSSLの仕様が変更になりました。
PHP 5.6.x における OpenSSL 関連の変更
これにより、file_get_contents()やimagesize()のような関数がエラーになります。
特に開発環境で自己証明書を利用時には注意です。

SSL通信結果確認

<?php
ini_set('display_errors',1);
ini_set('log_errors','On');

stream_context_set_default([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
        'capture_session_meta' => true,
    ],
]);

file_get_contents('https://www.google.com/');

$ctx = stream_context_get_default();
$meta = stream_context_get_options($ctx);
var_dump($meta['ssl']['session_meta']['protocol']);

$results = file_get_contents('https://ローカルドメイン/');
var_dump($results);
?>

https://www.google.com/ は信頼されるドメインのため正常にSSL通信できます。
https://ローカルドメイン/ は信頼されないドメインのためエラーになります。

証明書の確認

openssl コマンドで証明書内容を表示して、CN(ドメイン)を確認
CNとhttpsのドメインが一致しないと、file_get_contents()できません。

openssl x509 -in server.crt -text
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            e3:03:47:2c:20:5c:7f:9e
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=JP, ST=Tokyo, L=yoo, O=Telepath.inc, OU=Develepment, CN=debian/emailAddress=yoshikawa@telepath.co.jp
        Validity
            Not Before: Jul  4 10:31:50 2016 GMT
            Not After : Jul  2 10:31:50 2026 GMT
        Subject: C=JP, ST=Tokyo, L=yoo, O=Telepath.inc, OU=Develepment, CN=debian/emailAddress=yoshikawa@telepath.co.jp
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
....


SSL通信は自己証明書のドメインと一致させる

開発環境だとIP通信してしまいがちですが(自分もそう)、自己証明書のドメインと異なる場合、通信エラーになります。

URLは自己証明書のドメインを利用しましょう。

php.iniの設定

以下のファイルに「cafile」「capath」のパスを設定(curlも念のため設定)

- /etc/php5/apache/php.ini
- /etc/php5/cli/php.ini
curl.cainfo=/etc/ssl/server.crt
openssl.cafile=/etc/ssl/server.crt
openssl.capath=/etc/ssl/server.crt

phpinfo() でグローバル設定されてるか確認できます。
icon [Debian]Ruby 2.3 on Rails4 インストール (2016/06/23)
Debian8環境だとパッケージインストールは ruby1.9.3 まで。
よって2系は rbenvでインストール&管理することになります。

rbenvインストール

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

rbenv確認

$ rbenv -v
rbenv 1.0.0-21-g9fdce5d

rubyインストール

$ rbenv install --list
.....
$ rbenv install 2.3.0
$ rbenv global 2.3.0
$ rbenv rehash

ruby1.9以降、gemも含まれているようです。

Railsインストール

$ gem install rails
$ rails -v
Rails 4.2.6

Railsアプリ作成

$ rails new helloapp
このままサーバを起動しようとしてもエラーになるので、Gemfileに以下を追加

$ vi Gemfile
gem 'execjs'
gem 'therubyracer'

Railsサーバ起動

$ rails bundle install
$ rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Rails4.2から、IPオプションを指定しないと外部からアクセスできないようです。

Railsも何だか色々面倒になってますね。。。
icon [Debian]PostgreSQL利用時のエラー (2016/06/23)
railsサーバ起動時に以下のエラー
$ rails s
....
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
....
An error occurred while installing pg (0.18.4)
libpq-fe.h がないので postgresql-server-dev を入れろと怒られる。

# aptitude install postgresql-server-dev-9.3

bundle してもう一度起動
$ bundle install
$ rails s
<< 最初 < 前ページ 次ページ > 最後 >>