Vagrant上のUbuntu14.04にCakePHPをインストールする(準備編)

2020年10月10日

mod_rewriteを有効にする

CakePHPの公式を見るとApache2でmod_rewriteを有効にすることが推奨されるとのことなので早速やってみる。

まずはmod_rewriteが利用可能となっているかを確認する。

cat /etc/apache2/mods-available/rewrite.load

とコマンドを打つと

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

と表示された。
モジュールは使える状態みたいです。
有効化してみよう。

sudo a2enmod rewrite

コマンドを打つと以下が表示された。

Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart

service apache2 restartしてくれと言われたので

sudo service apache2 restart

これで完了。

PHP 5.6.0 以上 (PHP 7.1 も含む)にする

前回の記事でPHPのバージョンをアップした。

mbstring PHP 拡張

PHP7用のmbstringをインストール。

sudo apt-get install php7.0-mbstring

php.iniを編集する

cd /etc/php/7.0/apache2
sudo vim php.ini

Dynamic Extensions の欄に extention=mbstring.so を追記

extention=mbstring.so

Vimで

/mbstring

と打つと検索できるので[mbstring]の欄まで移動する。

</p>
<p>[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; <a href="http://php.net/mbstring.language">http://php.net/mbstring.language</a>
mbstring.language = Japanese ← コメント解除</p>
<p>; Use of this INI entry is deprecated, use global internal_encoding instead.
; internal/script encoding.
; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*)
; If empty, default_charset or internal_encoding or iconv.internal_encoding is used.
; The precedence is: default_charset &amp;lt; internal_encoding &amp;lt; iconv.internal_encoding
mbstring.internal_encoding = UTF-8 ← コメント解除&amp;amp;UTF-8に設定</p>
<p>; Use of this INI entry is deprecated, use global input_encoding instead.
; http input encoding.
; mbstring.encoding_traslation = On is needed to use this setting.
; If empty, default_charset or input_encoding or mbstring.input is used.
; The precedence is: default_charset &amp;lt; intput_encoding &amp;lt; mbsting.http_input
; <a href="http://php.net/mbstring.http-input">http://php.net/mbstring.http-input</a>
mbstring.http_input = auto ← コメント解除&amp;amp;autoに設定</p>
<p>; Use of this INI entry is deprecated, use global output_encoding instead.
; http output encoding.
; mb_output_handler must be registered as output buffer to function.
; If empty, default_charset or output_encoding or mbstring.http_output is used.
; The precedence is: default_charset &amp;lt; output_encoding &amp;lt; mbstring.http_output
; To use an output encoding conversion, mbstring's output handler must be set
; otherwise output encoding conversion cannot be performed.
; <a href="http://php.net/mbstring.http-output">http://php.net/mbstring.http-output</a>
mbstring.http_output = UTF-8 ← コメント解除&amp;amp;UTF-8に設定</p>
<p>; enable automatic encoding translation according to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do <em>not</em> use automatic encoding translation for
;       portable libs/applications.
; <a href="http://php.net/mbstring.encoding-translation">http://php.net/mbstring.encoding-translation</a>
mbstring.encoding_translation = On ← コメント解除&amp;amp;Onに。</p>
<p>; automatic encoding detection order.
; "auto" detect order is changed according to mbstring.language
; <a href="http://php.net/mbstring.detect-order">http://php.net/mbstring.detect-order</a>
mbstring.detect_order = auto ← コメント解除</p>
<p>; substitute_character used when character cannot be converted
; one from another
; <a href="http://php.net/mbstring.substitute-character">http://php.net/mbstring.substitute-character</a>
;mbstring.substitute_character = none</p>
<p>; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.</p>
<p>; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str<em>() functions
; 4: Overload ereg</em>() functions
; <a href="http://php.net/mbstring.func-overload">http://php.net/mbstring.func-overload</a>
;mbstring.func_overload = 0</p>
<p>; enable strict encoding detection.
; Default: Off
;mbstring.strict_detection = On</p>
<p>; This directive specifies the regex pattern of content types for which mb_output_handler()
; is activated.
; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml+xml)
;mbstring.http_output_conv_mimetype=</p>
<p>

あとの設定はよくわからないので放置。

設定が終わったら必ずapache再起動。

sudo service apache2 restart

&lt;?php
print_r(mb_get_info());
?&gt;

と書いただけのphp_check.phpを作成する。
ブラウザからphp_check.phpを見てみる。

Array (
[internal_encoding] =&gt; UTF-8
[http_output] =&gt; UTF-8
[http_output_conv_mimetypes] =&gt; ^(text/|application/xhtml+xml)
[func_overload] =&gt; 0
[func_overload_list] =&gt; no overload
[mail_charset] =&gt; ISO-2022-JP
[mail_header_encoding] =&gt; BASE64
[mail_body_encoding] =&gt; 7bit
[illegal_chars] =&gt; 0
[encoding_translation] =&gt; On
[language] =&gt; Japanese
[detect_order] =&gt; Array ( [0] =&gt; ASCII [1] =&gt; JIS [2] =&gt; UTF-8 [3] =&gt; EUC-JP [4] =&gt; SJIS )
[substitute_character] =&gt; 63
[strict_detection] =&gt; Off )

このように表示された。php-mbstring の導入は完了。
ここまでやったあとに、
どうやら

sudo apt-get install php7.0-intl php7.0-mbstring

で一発解決できるみたい。

intl PHP 拡張

上に書いた一発解決のやり方でインストール。

sudo apt-get install php7.0-intl

何故かaptからインストールするとphp.iniにextension=を記述しなくても使えるらしい。
ココらへんはよくわからず。

simplexml PHP 拡張

公式サイトを見ると、デフォルトで有効になっているとのこと。

これで準備が完了した。

CakePHP, Linux, MySQL, PHP

Posted by bistro