PHPStorm 2018.1.7 に更新
PHPStormを2018.1.?(2018.1.1だったか2018.1.3だったか)から2018.1.7に更新した。前に更新した時は「設定を引き継ぐか?」と聞かれたと思うのだが今回は聞かれなかった。
とりあえずプロジェクトは引き継がれているが、エディタやCode Styleなどの設定が引き継がれているかはよくわからん。どこを変えたか覚えてないので^^;
PHPStormを2018.1.?(2018.1.1だったか2018.1.3だったか)から2018.1.7に更新した。前に更新した時は「設定を引き継ぐか?」と聞かれたと思うのだが今回は聞かれなかった。
とりあえずプロジェクトは引き継がれているが、エディタやCode Styleなどの設定が引き継がれているかはよくわからん。どこを変えたか覚えてないので^^;
関連記事:
PHPメモ008:include,require
今更PHPの初歩の初歩みたいな話だが、include, include_once と require, require_once ってどう使い分けるのかがわからない。
どちらもファイルを読み込んで評価する命令だ。違いはわかっている。
で、具体的にどういうときに include でどういうときに require なのか?というか inclulde の使いどころが?だ。
必要なファイルが何らかの理由(ファイルがない、ファイルを読む権限がない、etc...)で読み込めませんでした、でも処理は続行というケースがあるだろうか。ファイルを読めなかったらもうその先を実行しても意味がない場合がほとんどのような気がする。
で、ググって調べて、なんとなくわかってきた。以下のような使い分けで良さそうだ。
ファイルの読み込みに失敗しても処理を続行しても構わないというのは、例えばページをヘッダ、コンテンツ、フッタに分割して、それぞれファイルを読み込んで表示する場合。
ヘッダの読み込みを失敗したとしても、コンテンツとフッタが読み込めるならそれはそれで読み込んで表示した方がいいよね、ってことだ。
こういう場合に include を使うのがよいと。
一方、require は処理に必要なライブラリを読み込むのに使う。
もしライブラリが読み込めなかったら、それ以降の処理をやろうとしても、クラスや関数がないためにエラーになるだろう。だから読み込み失敗の時点で fatal error にしちゃっていい。
自社のサービスのソースコードを見ると、ライブラリの読み込みに include、include_once を使ってる方が requrie、require_once を使ってるより多い。うーん。。。
参考ページ:
PHP: include - Manual
PHP: require - Manual
【PHP】includeとrequireの使い分け - Furudateのブログ
【PHP】include, requireの違いと使い分け | web codery
仕事でCakePHPを使うことになった。WEBアプリじゃなくてコンソールアプリだが。
とりあえずCentOSにインストールしてみた。
composerを使ってインストールした。
/var/www/html の下に example-app というフォルダを作成。そのフォルダに公式サイトの応用インストールというページに書いてある以下の composer.json をまるっとコピーして example-app に置いた。
{ "name": "example-app", "require": { "cakephp/cakephp": "2.6.*" }, "config": { "vendor-dir": "Vendor/" } }
そして、"composer install" を実行。
# composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing cakephp/cakephp (2.6.7) Downloading: 100% Writing lock file Generating autoload files #
これでCakePHP 2.6.7のファイルの配置が完了。ディレクトリ構成は大体以下のようになる。
cakephpの下にさらにcakephp。なんか変な気もするが、こういうものなのか?
example-app/ +-composer.json +-Vender/ +-bin/ +-autoload.php +-composer/ +-cakephp/ +-cakephp/ +-app/ +-Config/ +-Console/ +-Controller/ +-Lib/ +-Locale/ +-Model/ +-Plugin/ +-Test/ +-Vender/ +-View/ +-tmp/ +-webroot/ +-lib/
また、CakePHPはApacheのmod_rewriteを利用するが、これは既に使えるようになっていたので特に何かする必要はなかった。
デフォルトのtimzoneを設定。これはCakePHPとか関係なく、PHPをインストールした後すぐにやっておかなければならないことだった。
/etc/php.ini で下記のように設定する。
最初、/etc/httpd/conf.d/php.conf に書き込んだらエラーなって悩んでしまった。このApacheのPHPに関する設定ファイルであって、PHPの設定ファイルではなかったorz
date.timezone = Asia/TokyoSecurity.saltとSecurity.cipherSeedの変更
app/Config/core.php に設定されている Security.salt と Security.cipherSeed を修正する。初期値のままだと初期画面に警告がでる。
app/tmpのパーミッション変更app/tmpディレクトリ以下に一時ファイルが作られるので、パーミッションの設定をする。
chmod -R 777 app/tmpDB接続の設定
DB接続の設定は app/Config の datababase.php.default を database.php にリネームして行う。デフォルトではMySQL用。PostgreSQLを使う場合は datasource を書き換え、port と schema を加える。encoding はコメントになっていたので有効にする。host、login、password、database は自分の環境に合わせて変更する。
class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Postgres', 'persistent' => false, 'host' => '192.168.1.11', 'port' => '5432', 'login' => 'user', 'password' => 'pass', 'database' => 'mydb', 'schema' => 'public', 'prefix' => '', 'encoding' => 'utf8', ); …バーチャルホストの設定、SELinuxの無効化、Apacheの再起動
「Laravelのインストール」を app/webroot をドキュメントルートとしてバーチャルホストの設定し、SELinuxを無効化して、Apacheを再起動。
ここまでやって、設定したバーチャルホストにアクセスすると、CakePHPのデフォルトのページが表示される。
#まだ「DebugKitがインストールされていない」というWarningが出ているが。
参考ページ:
応用インストール — CakePHP Cookbook 2.x ドキュメント
CakePHPのダウンロードとインストール - CakePHPの使い方
AWS EC2にPHP5.5環境でCakePHPを導入 - Qiita
インストール — CakePHP Cookbook 2.x ドキュメント
CakePHPでPostgreSQLを使う - Qiita
参考ページ:Composer
Composerを使ってPHPのパッケージを簡単インストール (2/3):CodeZine
以下のコードでPHPからPDOでPostgreSQLに接続できること確認しようと思った。
$dsn = 'pgsql:dbname=mydb;host=192.168.1.11;port=5432'; $user = 'user'; $pass = 'pass'; try { $dbh = new PDO($dsn, $user, $pass); $sql = 'SELECT CURRENT_TIMESTAMP'; foreach ($dbh->query($sql) as $row) { print $row[0] . "\n"; } $dbh = null; } catch (PDOException $e){ print('[ERROR] ' . $e->getMessage() . "\n"); die(); }
繋がらない。以下のメッセージが出た。
[ERROR] could not find driver
"php -i" で確認。
#"php -i" は phpinfo() を出力するそうだ。
# php -i | grep pdo /etc/php.d/pdo.ini, /etc/php.d/pdo_sqlite.ini, PHP Warning: 《省略》 pdo_sqlite #
pdo_postgresql とかPostgreSQLと関連ありそうなものが見当たらない。これが「ドライバない」ということか。
"yum list" でパッケージを探すとphp-pgsqlというのがあったのでそれをインストールしてみた。
# yum --enablerepo=remi --enablerepo=remi-php55 list | grep pgsql apr-util-pgsql.x86_64 1.3.9-3.el6_0.1 base dovecot-pgsql.x86_64 1:2.0.9-8.el6_6.4 updates libdbi-dbd-pgsql.x86_64 0.8.3-5.1.el6 base mod_auth_pgsql.x86_64 2.0.3-10.1.el6 base php-pear-MDB2-Driver-pgsql.noarch 1.5.0-0.7.b4.el6.remi remi php-pgsql.x86_64 5.5.25-1.el6.remi remi-php55 php54-php-pgsql.x86_64 5.4.41-1.el6.remi remi php55-php-pgsql.x86_64 5.5.25-1.el6.remi remi php56-php-pgsql.x86_64 5.6.9-1.el6.remi remi rsyslog-pgsql.x86_64 5.8.10-10.el6_6 updates rsyslog7-pgsql.x86_64 7.4.10-3.el6_6 updates uuid-pgsql.x86_64 1.6.1-10.el6 base # yum --enablerepo=remi --enablerepo=remi-php55 install php-pgsql 《省略》 インストール: php-pgsql.x86_64 0:5.5.25-1.el6.remi 依存性を更新しました: php.x86_64 0:5.5.25-1.el6.remi php-cli.x86_64 0:5.5.25-1.el6.remi php-common.x86_64 0:5.5.25-1.el6.remi php-gd.x86_64 0:5.5.25-1.el6.remi php-mbstring.x86_64 0:5.5.25-1.el6.remi php-mcrypt.x86_64 0:5.5.25-1.el6.remi php-pdo.x86_64 0:5.5.25-1.el6.remi php-process.x86_64 0:5.5.25-1.el6.remi php-xml.x86_64 0:5.5.25-1.el6.remi 完了しました! #
インストール完了。PHP関連が一緒に色々アップデートされた。それから httpd を再起動。
"php -i" を見ると、pdo_pgsqlが入っている。
ちなみに、PHPの拡張モジュールの共有ライブラリ自体のディレクトリは
/usr/lib64/php/modules
設定ファイルのディレクトリは
/etc/php.d
これで最初のプログラムを実行すると、ちゃんと接続できてクエリの結果が返ってきた。
参考ページ:
PHP/PDOを使ってPostgreSQLに接続する - 調べる.db
PHP: PDO - Manual
PHP: PostgreSQL (PDO) - Manual
PHPから送信しているメールで
「件名が途中で切れて、本文の先頭にメールヘッダらしきものが付く」
という不具合が起きた。
この不具合、毎回必ず起きるわけではなく、また発生した場合もすべてのメール受信者のところで起きているわけではなかった(ほぼ同じ内容のメールを複数の人に送信している)。
現象を報告してきた人はOutlook2013を使っているとのことなので、自分のPCにOutlook2007と2013をインストールして同じ件名・本文のメールを受信した見たが、問題なく受信できた。ThunderbirdやGmailでも問題なし。
調査の結果として
「まあサーバ側の処理もよろしくなかったかもしれないけど、Outlookもちょっとおかしいんじゃね?」
という結論に^^;
まず、サーバ側でまずかったのは、改行コードとしてCRLFとLFが混在していたこと。
Subject以外のヘッダは
$content_type = "Content-Type: text/plain; charset=ISO-2022-JP\n";
のようにしている。改行コードはLF。
しかし、Subjectヘッダは
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS');
としていた。mb_encode_mimeheader() を第3,4引数が省略可で、その場合、第4引数$linefeed のデフォルト値は "\r\n" 。
つまり、Subjectヘッダだけ改行コードがCRLFになっていたと思われる。
これを
$subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\r\n");
としたところ、問題は発生しなくなった。
もう少し詳しく調査をしてみた。
問題発生した環境でメールをファイルに保存してもらい、それをテキストファイルで開いてみると、Subjectヘッダ付近は以下のようになっていた。
Subject: =?iso-2022-jp?B?*******************************************************=?= MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-Index: AdCXa30bcJOZvjFWQ+GQbisiXjOi/Q== =?ISO-2022-JP?B?***************************=?=
1行目の値をデコードするとメーラーに件名として表示されいる内容(途中でちょん切られた件名)と一致した。
Thred-Indexというヘッダの下に空行があり、その下の行はメーラーで本文の1行目として表示されているものと一致した。
あー、たぶんこういうことだ。
なぜ問題が発生する場合と発生しない場合があるかというと、問題の発生条件が件名の長さによるからだ。
mb_encode_mimeheader() はエンコードした結果が74文字より長いと改行を入れて分割する。これはメールの仕様上問題はない。
件名が短くて分割されない場合、メールの改行コードはすべてLFで問題が発生しない。
しかし、件名が長くてSubjectヘッダが分割されると、mb_encode_mimeheader() の引数$linefeed をデフォルトのままにしていたせいで、その分割のところだけ改行コードがCRLFになる。そしてそのヘッダをOutlookがうまく処理できなくて今回の問題が発生した。
根本的な原因は自分のコーディングにあったのだが、それでも問題が発生したのはOutlookだけだ。それにOutlookでも必ず発生するわけではない。
テキストファイルで開いたメールのヘッダでThread-IndexというヘッダはOutlookが付加する非標準のヘッダだそうだ。
そしてその下に空行が入って、さらに分割されたSubjectヘッダの後半がある。
Outlookでも現象が起きたり起きなかったりするのは、設定とか環境(Exchangeのメール以外のサービスを何か使っているとか)によってこのThread-Indexというヘッダを使う/使わないが変わって、それで使う場合にのみこの現象が発生するんじゃないかと。
実際、現象が発生しなかった自分のOutlook2013で受信したメールを見ると、Thread-Indexはなかった。
という訳で、原因は「Outlookが非標準のヘッダを使っていて、その処理がなんかおかしい」ということで。
#責任回避。
参考ページ:
【php】mail関数の改行コード注意点 at softelメモ
PHP: mb_encode_mimeheader - Manual
メールヘッダ一覧
メールのヘッダフィールド・マニアックス: 非標準 - 鳥さんの落書き帳
関連記事:
Laravel4のインストール
とりあえずデバッグモードを有効化し、タイムゾーンとロケールを設定した。
app/config/app.php の3箇所を以下のように変更する。
… 'debug' => true, … 'timezone' => 'Asia/Tokyo', … 'locale' => 'ja', …
Hello world は、app/routes.php に以下のように記述する。
Route::get('/', function() { return 'Hello world!'; });
トップページにアクセスすると、"Hello world!" と表示される。
Hello world にログを出力するコードを追加する(3行目)。
ログファイルはデフォルトでは app/storage/logs/laravel.log
Route::get('/', function() { Log::info('log test'); return 'Hello world!'; });
ログなど開発時に重宝する情報をクライアントの画面に表示してくれる Laravel Debugbar というパッケージをインストール。
composer を使う。composer の解説のページでは composer.json にインストールするパッケージの情報を追記するとあるが、composer.json 作るのか?と思ったら、Laravelのプロジェクトのディレクトリにあった。Laravelのプロジェクトを composer で作ったから、その時に自動的に作られたのかな。
composer.json のrequireに以下を追記する。
"barryvdh/laravel-debugbar": "1.8"
composer.json を変更した後、コマンドラインで "composer update" でインストールが行われる。
さらに app/config/app.php の2箇所に追記を行う。
providers に以下を追加する。
'Barryvdh\Debugbar\ServiceProvider',
aliases に以下を追加する。
'Debugbar' => 'Barryvdh\Debugbar\Facade',
これで Debugbar が使用できようになった。画面は以下のようになる。
参考書籍:
![]() |
Laravelエキスパート養成読本[モダンな開発を実現するPHPフレームワーク!] (Software Design plus) 川瀬 裕久 古川 文生 松尾 大 竹澤 有貴 小山 哲志 新原 雅司 技術評論社 2015-04-21 売り上げランキング : 4108 Amazonで詳しく見る by G-Tools |
参考ページ:Laravel
PHPフレームワークLaravelやってみた | webOpixel
Laravel出力ログファイルの切り替え(またはローテーション) - IT屋だけど、なにか?
実行するSQLのクエリーをlaravel.log以外に吐いてみた - 生涯未熟
参考ページ:composer
Composer ドキュメント日本語訳
参考ページ:Laravel Debugbar
Laravel4 Debugbarをインストールする | ちらうら
Laravel4.2.x を使っていて laravel-debugbar も使っているなら「"barryvdh/laravel-debugbar": "1.8"」を忘れずに - Qiita
laravel4を使って最速簡易ブログ作成の方法 - Qiita
jQueryでリクエストを投げてPHPで配列のデータをJSON形式で返すアプリケーションを考える。
サーバ側のプログラムのサンプル。
$data = array('5' => array('areaName' => '大森') , '7' => array('areaName' => '蒲田') , '3' => array('areaName' => '大井町')); print json_encode($data);
クライアント側のプログラムのサンプル。data はPOSTパラメータでサーバ側では使っていないが、Ajaxでサーバ側にパラメータを渡す例として書いておいた。
var url = "./ajax.php"; var data = { "mode" : "hoge" }; $.post(url, data, function(data) { for (var key in data) { alert("key=" + key + ",areaName=" + data[key].areaName); } }, "json" );
これを実行するとクライアント側ではサーバ側の元のデータの順序、つまり「大森」、「蒲田」、「大井町」と表示されると期待してしまうが、実際は「大井町」、「大森」、「蒲田」の順で表示される。
#Firefoxの場合。他のブラウザでは試していない。
原因はPHPの json_encode() がPHPの配列をJSONのオブジェクトに変換してしまうためである。実際のレスポンスのボディは以下のようになっている(デコードしてインデントを付けている)。
{ "5": { "areaName": "大森" }, "7": { "areaName": "蒲田" }, "3": { "areaName": "大井町" } }
これは3つのプロパティを持つJSONオブジェクトであり、配列ではないのでプロパティに順序なんてない。実際の出力の順序を見るとプロパティ名の降順で出力しているように見える。たまたまかもしれないが。
対策としては、サーバ側で json_encode() を使うのをやめて、PHPの配列を受け取ってJSON形式の配列を返す処理を自前で書けばいい。
修正したコードを以下に示す。下記のサーバ側コードで json_encode() の代わりの関数 json_array_encode() は汎用的なものではなく、配列のデータの形式が決まっているものとしてその形式だけにとりあえず対応したものである。json_array_encode() ではareaNameの値をUNICODEコードポイントの文字列に変換するために json_encode() を使っている。
サーバ側
$data = array('5' => array('areaName' => '大森') , '7' => array('areaName' => '蒲田') , '3' => array('areaName' => '大井町')); print json_array_encode($data); exit; function json_array_encode($data) { $buf = array(); foreach ($data as $k => $v) { $buf[] = '{"areaId":"' . $k . '","areaName":' . json_encode($v['areaName']) . '}'; } return '[' . implode(',', $buf) . ']'; }
クライアント側
var url = "./ajax.php"; var data = { "mode" : "aaa" }; $.post(url, data, function(data) { for (var key in data) { alert("areaId=" + data[key].areaId + ",areaName=" + data[key].areaName); } }, "json" );
修正後のレスポンスのボディは以下のようにオブジェクトではなく配列となっている。
表示の順序は「大森」、「蒲田」、「大井町」とサーバ側のPHPの配列の順序どおりになる。
[ { "areaId": "5", "areaName": "大森" }, { "areaId": "7", "areaName": "蒲田" }, { "areaId": "3", "areaName": "大井町" } ]
参考ページ: PHPと異なり,JavaScriptの連想配列とfor in構文には順序の概念がないので注意すること - プログラミングとIT技術をコツコツ勉強するブログ
関連記事:
[CentOS 6.6]PHP5.5のインストール
Laravelに関する本が出たので購入。電子出版による本はすでにあったが、紙媒体では初のLaravel本だと思う。
本に従ってvirtualbox上のCentoOS 6.6 でLaravelプロジェクトを作成してみた。
最初に本の内容に入る前に、Laravelで必須なPHPのmbstringがインストールされていなかったので、以下のようにyumでインストールした。
yum --enablerepo=remi --enablerepo=remi-php55 install php-mbstring
ここから本の内容に従った作業。
現在、Laravelの最新バージョンは5だが、今回はバージョン4の環境を作る。今後、触るかもしれないWEBアプリがバージョン4で作られているので。
LaravelのインストールはPHPやPostgreSQLの「インストール」とは違うような気がする。プロジェクトをごとにLaravelの環境を作ると考えた方が合っている?
composerコマンドを下記を実行すると、指定したディレクトリに必要なファイルが用意される。ディレクトリ名はプロジェクトのディレクトリを指定する。絶対でも相対でもよい。
composer create-project laravel/laravel <ディレクトリ名> 4.2.*
今回はディレクトリをドキュメントルートのサブディレクトリ /var/www/html/ltest とした。
# composer create-project laravel/laravel /var/www/html/ltest 4.2.* Warning: This development build of composer is over 30 days old. It is recommended to update it by running "/usr/local/bin/composer self-update" to get the latest version. Installing laravel/laravel (v4.2.11) - Installing laravel/laravel (v4.2.11) Downloading: 100% Created project in /var/www/html/ltest Loading composer repositories with package information Installing dependencies (including require-dev) - Installing symfony/translation (v2.5.11) Downloading: 100% <中略> laravel/framework suggests installing doctrine/dbal (Allow renaming columns and dropping SQLite columns.) Writing lock file Generating autoload files Generating optimized class loader Compiling common classes Compiling views Application key [**********************] set successfully. #
「composerをアップデートしろ」的なワーニングが出たが、コマンドはたぶん正常に完了。
インストールの最後に表示される "Application key" は app/config/app.php が返す配列のキーが "key" という要素の値に保存されている。
プロジェクトのディレクトリは以下のような構成となる。
app ├─commands ├─config ├─controllers ├─database │ ├─migrations │ └─seeds ├─lang ├─models ├─start ├─storage ├─tests └─views bootstrap public vendor
上記のディレクトリの中で app/storage 以下はLaravelがファイルを保存できるように、以下のコマンドでパーミッションを777に変更しておく。
chmod -R 777 storage
プロジェクトのディレクトリをLinuxのユーザのホームディレクトリの配下、例えば /home/hoge/ltest とかにすると、SELinuxのせいで色々と面倒らしい。
作成したプロジェクトのディレクトリ配下のpublicディレクトリがドキュメントルートとなるので、ここをドキュメントルートとするバーチャルホストの設定をする。
まず、httpd.conf の以下の2箇所を変更。
変更前: #ServerName www.example.com:80 変更後: ServerName www.into1st.jp:80
変更前: #NameVirtualHost *:80 変更後: NameVirtualHost *:80
ServerNameについてはコメントになってればいいと書いてあるWEB上の記事もあったが、こうしないと以下のようなワーニングが出力された。
# service httpd restart httpd を停止中: [ OK ] httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerNameCentOS 6.6のApacheでは設定ファイルは /etc/httpd/conf/httpd.conf である。この設定ファイルの中で /etc/httpd/conf.d/*.conf を読み込むようになっている。よって、バーチャルホストの設定として以下の3ファイルを /etc/httpd/conf.d に作成する。ファイル名は適当に決めた。
virtualhost-undefinedhost.conf は未定義のホスト名でアクセスされた場合にアクセスを拒否するための設定。
<VirtualHost *:80> ServerName any <Location /> Require all denied </Location> </VirtualHost>
virtualhost-main.conf はメインのホスト名の設定。/var/www/html をドキュメントルートとする。
<VirtualHost *:80> ServerName www.into1st.jp DocumentRoot /var/www/html </VirtualHost>
virtualhost-virtual01.conf はLaravel4のプロジェクト用バーチャルホストの設定。
<VirtualHost *:80> ServerName www.ltest.jp DocumentRoot /var/www/html/ltest/public ErrorLog logs/virtual-error_log CustomLog logs/virtual-access_log combined env=!no_log </VirtualHost>
これで、httpd を再起動すればOK、のはず。しかしまだワーニングが。
# service httpd restart httpd を停止中: [ OK ] httpd を起動中: Warning: DocumentRoot [/var/www/html/ltest/public] does not exist
SELinuxが原因らしい。面倒だなSELinux。
ちゃんと対応するなら /var/www/html/ltest/public にSELinuxのラベルの設定を行うらしいのだが、その対応はいつかすることにして、今回は一時的にSELinuxを無効にして再起動。
# getenforce Enforcing # setenforce 0 # getenforce Permissive # service httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
これでサーバ側の設定は完了。
DNSの設定変更は面倒なので、クライアントPCのhostsファイルにバーチャルホストの設定に記述したドメインを以下のように追記する。
<サーバのIPアドレス> www.into1st.jp www.ltest.jp
これで http://www.ltest.jp/ にアクセスすると "You hava arrived." と表示される。
長かった^^;
参考書籍:
![]() | Laravelエキスパート養成読本[モダンな開発を実現するPHPフレームワーク!] (Software Design plus) 川瀬 裕久 古川 文生 松尾 大 竹澤 有貴 小山 哲志 新原 雅司 技術評論社 2015-04-21 売り上げランキング : 4108 Amazonで詳しく見る by G-Tools |
参考ページ:Laravelについて
インストール 4.2.0 Laravel
CentOS 6.5 + PHP 5.6 + MySQL 5.6 + laravel4 環境を作る(part 2)|OISのブログ|株式会社オリエンタルインフォーメイションサービス
CentOS 6.6 で Laravel4 を使う準備 - Qiita
CentOS 6.5 + nginx 1.6.1 + Laravel 4.2のインストールメモ - Qiita
PHP - Laravel 4のインストール - Qiita
参考ページ:バーチャルホストについて
バーチャルホスト設定 - CentOSで自宅サーバー構築
11 | 5月 | 2013 | 其未来.com
複数のドメインを運営する (バーチャルホスト) - Linux で自宅サーバ [ Home Server Technical. ]
参考ページ:SELinuxについて
[CentOS][Apache]SELinux有効下でのドキュメントルートの変更 | ごった煮 - tips about programming and building a server
SELinuxを有効にしているときにありがちなpermission denied - kgbu's diary
SELinuxを無効化する | Smart
関連記事:
[CentOS 6.6]PHP5.5のインストール準備(EPEL、REMIリポジトリの追加)
[CentOS 6.6]PHP5.5のインストール
Laravelはcomposerというパッケージ管理ツールを使ってインストールするとうことなので、まずcomposerをインストールした。
[root@localhost ~]# curl -sS https://getcomposer.org/installer | php #!/usr/bin/env php All settings correct for using Composer Downloading... Composer successfully installed to: /root/composer.phar Use it: php composer.phar [root@localhost ~]# mv composer.phar /usr/local/bin/composer [root@localhost ~]# which composer /usr/local/bin/composer
参考ページ:
CentOS 6.5 + PHP 5.6 + MySQL 5.6 + laravel4 環境を作る(part 2)|OISのブログ|株式会社オリエンタルインフォーメイションサービス
CentOS 6.6 で Laravel4 を使う準備 - Qiita
関連記事:
[CentOS 6.6]PHP5.5のインストール準備(EPEL、REMIリポジトリの追加)
EPEL、REMIリポジトリを追加したのにいよいよインストール。
既存のリポジトリを無効にしなければいけないと書いてあるサイトもあったが、そんなこともなく、以下のようにインストールできた。
# yum --enablerepo=remi --enablerepo=remi-php55 install php php-gd php-pdo php-xml 読み込んだプラグイン:downloadonly, fastestmirror, refresh-packagekit インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * remi: remi.kazukioishi.net * remi-php55: remi.kazukioishi.net * updates: www.ftp.ne.jp 依存性の解決をしています (中略) 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: php x86_64 5.5.21-1.el6.remi remi-php55 2.6 M php-gd x86_64 5.5.21-1.el6.remi remi-php55 72 k php-pdo x86_64 5.5.21-1.el6.remi remi-php55 112 k php-xml x86_64 5.5.21-1.el6.remi remi-php55 208 k 依存性関連でのインストールをします。: gd-last x86_64 2.1.1-1.el6.remi remi 135 k libXpm x86_64 3.5.10-2.el6 base 51 k php-cli x86_64 5.5.21-1.el6.remi remi-php55 3.7 M php-common x86_64 5.5.21-1.el6.remi remi-php55 1.0 M php-pear noarch 1:1.9.5-3.el6.remi remi 375 k php-pecl-jsonc x86_64 1.3.6-1.el6.remi.5.5.1 remi-php55 47 k php-pecl-zip x86_64 1.12.4-1.el6.remi.5.5 remi-php55 269 k php-process x86_64 5.5.21-1.el6.remi remi-php55 57 k t1lib x86_64 5.1.2-6.el6_2.1 base 160 k トランザクションの要約 ================================================================================ インストール 13 パッケージ (中略) 完了しました!
とりあえずphp本体の他に php-gd、php-pdo、php-xml をパラメータとして指定した。依存関係からpearなどもインストールされた。
Laravelには php-mcrypt が必要というのでインストールしようとしたが、すんなりとはいかなかった。
php本体と同様にインストールしようとしたら、「libmcryptが必要」というエラーが出た。
# yum --enablerepo=remi --enablerepo=remi-php55 install php-mcrypt (中略) エラー: パッケージ: php-mcrypt-5.5.22-1.el6.remi.x86_64 (remi-php55) 要求: libmcrypt.so.4()(64bit) 問題を回避するために --skip-broken を用いることができません これらを試行できます: rpm -Va --nofiles --nodigest
標準のリポジトリやREMIに libmcrypt はなかったが、EPELにあったのでインストール。
何かワーニング出たけどインストールできた。
# yum --enablerepo=epel install libmcrypt.x86_64 (中略) 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: libmcrypt x86_64 2.5.8-9.el6 epel 96 k (中略) パッケージをダウンロードしています: libmcrypt-2.5.8-9.el6.x86_64.rpm | 96 kB 00:00 警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 Importing GPG key 0x0608B895: Userid : EPEL (6) <epel@fedoraproject.org> Package: epel-release-6-8.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 (中略) インストール: libmcrypt.x86_64 0:2.5.8-9.el6 完了しました!
それからphp-mcryptをインストールする。今度はエラーとならずに完了。同時にphp自体も5.5.21から5.5.22にアップデートされた。
#PHP5.5のインストールは実は先週行ったので、1週間の間に新しいバージョンが出たようだ。
libmcryptのインストール時の警告は気になるが、とりあえずこの状態からlarabelのインストールを目指そう。
# yum --enablerepo=remi --enablerepo=remi-php55 install php-mcrypt (中略) 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: php-mcrypt x86_64 5.5.22-1.el6.remi remi-php55 43 k 依存性関連での更新をします。: php x86_64 5.5.22-1.el6.remi remi-php55 2.6 M php-cli x86_64 5.5.22-1.el6.remi remi-php55 3.7 M php-common x86_64 5.5.22-1.el6.remi remi-php55 1.0 M php-gd x86_64 5.5.22-1.el6.remi remi-php55 72 k php-pdo x86_64 5.5.22-1.el6.remi remi-php55 112 k php-process x86_64 5.5.22-1.el6.remi remi-php55 57 k php-xml x86_64 5.5.22-1.el6.remi remi-php55 208 k (中略) インストール: php-mcrypt.x86_64 0:5.5.22-1.el6.remi 依存性を更新しました: php.x86_64 0:5.5.22-1.el6.remi php-cli.x86_64 0:5.5.22-1.el6.remi php-common.x86_64 0:5.5.22-1.el6.remi php-gd.x86_64 0:5.5.22-1.el6.remi php-pdo.x86_64 0:5.5.22-1.el6.remi php-process.x86_64 0:5.5.22-1.el6.remi php-xml.x86_64 0:5.5.22-1.el6.remi 完了しました!
2015/05/07追記
Laravelにはphp-mbstringも必要だった。php-mbstringをインストールしたときの記事は以下。
Laravelのインストール
参考ページ:
CentOS6.x - CentOS6.6に php5.5をインストールしてみる。 - Qiita
【CentOS, PHP】CentOSへのPHP5.5, MySQL5.6環境の構築 - Qiita
CentOS 6.5 にphp5.5とMySQL5.6をyumでインストールする - Qiita
CentOS6.5にPHP5.5をインストールする - inari blog (@inari111)
CentOS 6.6 LAMPサーバ インストールメモ【CentOS6.6+Apache+MySQL+PHP】 | あぱーブログ
Laravel - The PHP Framework For Web Artisans
CentOSでlibmcryptをインストール | Me-ISM
Advanced/W-ZERO3[es] Androidアプリ開発 FF11 Java JavaScript Jリーグ Linux MySQL PC PHP PostgreSQL SQL Xperia ray アニメ・コミック アルビレックス新潟 ウェブログ・ココログ関連 グルメ・クッキング ゲーム サッカー サッカーW杯 サーブレット・JSP スポーツ セキュリティ ニュース パソコン・インターネット プログラミング、技術情報 外国為替証拠金取引 学問・資格 将棋 心と体 携帯・デジカメ 旅行・地域 日記・コラム・つぶやき 映画・テレビ 書籍・雑誌 株式投資 秀丸エディタ 経済・政治・国際 芸能・アイドル 趣味 釣り 開発環境 音楽
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Recent Comments