Pdflibのログ出力

ログを出力する場合

set_parameterの第二引数にfilename=パスからのファイル名

を指定する。ログ・ファイルには書き込み権限が必要

例:$pdflib->set_parameter(“logging”, “filename=/var/log/pdflib.log”);

composerによるcakePHPのインストール

http://book.cakephp.org/2.0/ja/installation/advanced-installation.html
composer.jsonに
{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.4.9"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

あとは
$php composer.phar install
とするだけ

requireの書き方を以前
"pear-cakephp/cakephp": "2.*"
このような形でかいていたんだけど
vagrantでprovisionしたときに
Your requirements could not be resolved to an installable set of packages.

 Problem 1
 - The requested package pear-cakephp/cakephp could not be found in any version, there may be a typo in the package name.
とのエラーが出たため

requreを
"cakephp/cakephp": ">=2.4.9"
とすることで実行可能だった

 

ubuntuのPHPをPHP5.4やPHP5.5にする(chef)

vagrantで設定しているphpのバージョンを上げたかったので

execute “apt-get update” do
command “apt-get update”
end

package “python-software-properties” do
action [:install, :upgrade]
end

execute “add repository ppa:ondrej” do
command “add-apt-repository ppa:ondrej/php5-oldstable”
#command “add-apt-repository ppa:ondrej/php5”
end

上記をシェフスクリプトの頭に追加

php-oldstableでPHP5.4(2014/6/12現在)

php5を指定すると最新でphp5.5

参考:

https://www.digitalocean.com/community/questions/how-to-install-php-5-4-4-or-newer-version-of-5-4-on-ubuntu-12-04-lts

http://qiita.com/RyujiAMANO/items/755a85a2714f2dfa3a0b

phpで502 Bad Gateway

PHP5.4+nginxで502 Bad Gatewayが発生した場合

nginxの設定

例:/etc/nginx/conf.d/php-fpm.conf

fastcgi_pass 127.0.0.1:9000;

fastcgi_pass unix:/var/run/php5-fpm.sock;

このように変更

まだ発生する場合は

/etc/php5/fpm/pool.d/www.conf

の下記行のコメントを外す

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Chat Workへengine yardのdeployを通知

engine yardにdeployを行った時、Chat Workへ自動で通知を行うための設定です。

Chat WorkのAPIはAPIトークンをhttpヘッダーに追加する必要があるのでdeploy hookでcurlを使って行ってみました。

1.API申請

現在プレビュー版なのでチャットワークにAPIの使用申請を行います。

http://developer.chatwork.com/ja/

2.APIトークンの発行

確認のメールが届いたら

http://developer.chatwork.com/ja/authenticate.html

こちらを参考にAPIトークンの発行を行います。

3.engine yardのdeploy hookに追加

githubに登録しているリポジトリのデプロイフックにChat WorkのAPIを叩く処理を追加します。

階層は

/リポジトリのルート/deploy

ここではデプロイ後に通知しようと思うのでafter_bundle.rbに追記します。

[rb]

notify_deploy_environments = %w(staging production development)
notify_deploy_roles = %w(solo app_master)

if notify_deploy_environments.include?(environment) && notify_deploy_roles.include?(current_role)

run "curl -X POST -H ‘X-ChatWorkToken: チャットワークのAPIトークン’ -d ‘body=Deploy+#{config.environment_name}+Done%21nDeploy+by:#{config.deployed_by}nrepo:#{config.repo}nrevision:#{config.revision}%21’ ‘https://api.chatwork.com/v1/rooms/書き込みたいチャットルームID/messages’"
end

[/rb]

※一行が長いのでスクロールしてみるかctl+aしてください。

環境がstaging,production,developmentのときでapp_masterかsoloの場合のみに通知します。(複数台構成で全て通知される必要は無いため)

runでコマンドを叩きます。コマンドの内容は基本Char Workのマニュアルのままです。

http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages

もう少し見やすく整形出来るかもしれません。見やすい方法を作ったら教えて下さい。

deploy_hookを作成したら

gitのリポジトリに最新版としてアップしてください。

deploy時では今上げたリポジトリを指して、engine yardのダッシュボードからdeployを行ってください。

成功すれば上記のようにdeployの情報が自動的にChat Workに流れるます。

array_walkでクラスメソッドの指定

コールバックは、PHP 5.4 以降では callable タイプヒントで表されます。 このページでは、callback 型情報を同じ目的で使っています。

array_walkやusort等コールバック関数の場合最初の2番目の引数に関数名を渡すしますが

クラスにあるメソッド等を呼ぶ場合

http://jp.php.net/manual/ja/language.types.callable.php

$this->some_method();

とかであれば

array_walk($answer, array($this,’some_method’);

composerでのcakePHPインストール

環境作るの面倒ですね

最近はvagrantで環境持ってくるので楽してたんですが

第三者に見せる場合等、サーバ上にインストールする必要があるので

サーバでcomposer使ってインストールしてみました。

composerはパッケージ等でインストールしておきます。

手順はほぼcakeのドキュメントそのままです

http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

プロジェクトのホームディレクトリにcomposer.jsonを作成

$cd /home/project

$vi composer.json

<pre>{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "pear-cakephp/cakephp": ">=2.3.4"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}</pre>

php composer.phar install

これでVendor/配下にインストールされます。
この後projectを作成します。
$ Vendor/bin/cake bake project
Welcome to CakePHP v2.4.0 Console
—————————————————————
App : project
Path: /home/project/
—————————————————————
What is the path to the

project you want to bake?
[/home/project/myapp] >

変更の必要がなければこれで完了です。

ブラウザからアクセスして

いつもの画面が表示されれば設定完了です。

#色々バージョンが古いとcomposerが動かないかもしれません。(一気にyum updateとかしたら凄く時間かかりましたw)

Drupalのファイルアップロードサイズ

Drupalでファイルブラウザーを使って

ファイルアップロードすると2MBを超えています。等のエラーに鳴る場合がある

この場合php.iniの制限にかかっている場合があるので

php.iniを直接編集するか

upload_max_filesize = 50M
post_max_size = 50M

.htaccessにて

php_value upload_max_filesize 50M
php_value post_max_size 50M

を追加する必要がある。

Google Appsのグループに招待状無しでユーザ追加

google apps 上部のメニューからグループを選択

赤いグループを作成を選択

必要事項を記入し

グループの種類ではメーリングリストを選択

入力が終わったら上部の作成ボタン押下でMLが作成出来ます。

公開範囲や投稿を適時設定してから問題のユーザ追加ですが

直接追加を行なっても、招待のメールが飛んでしまいます。

これを回避するためにはGoogle Apps側の管理画面に入り

グループの編集でユーザの追加を行なって下さい。

ドメインの内部外部どちらでも、管理画面からの追加であればユーザに確認メールは飛びません