質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.98%

CakePHPを開発環境で利用できるようにしたい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,427

ssk

score 286

環境

・Apache 
・Mac OS Sierra 
・Macports

やりたいこと

・CakePHPを開発環境で利用できるようにしたい

できていないこと

・CakePHPのトップページを表示すること

その他の情報

localhost/samplesite/
にアクセスすると以下のエラー文が表示されます。

Fatal error: You must enable the intl extension to use 
CakePHP. in /Users/name/Sites/samplesite/config/bootstrap.php on line 27

bootstrap.php on line 27

if (!extension_loaded('intl')) {
    trigger_error('You must enable the intl extension to use CakePHP.', E_USER_ERROR);
}

phpinfoのphp.iniがnoneになっているのが原因なのかと思い
イメージ説明

httpd.confに

<IfModule php7_module>
    PHPINIDir "/opt/local/etc/php70/php.ini"
</IfModule>

を追加したのですが、phpinfoを見ても反映されませんでした。
何が原因なのかわからず、手がつけられない状態です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

sudo port install php7-intl

バージョンは環境に合わせてください。
パッケージ名は以下で調べてみれば判明するはず。

sudo port search intl

以下のコマンドで起動したのであれば、

# apachectl restart

以下のコマンドで、ヘルプが表示される。
apachectl に限らず、たいていのコマンドには、ヘルプを表示するオプションが必ず存在しています。正直ググるより早い。

apachectl -?

コマンドによっては -? だったり --help だったりと統一性がないのが、難だが、

man apachectl

のように、man のあとに、コマンド名をつければ表示される。

apachectl -?

Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
                       [-C "directive"] [-c "directive"]
                       [-k start|restart|graceful|graceful-stop|stop]
                       [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
  -D name            : define a name for use in <IfDefine name> directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed vhost settings
  -t -D DUMP_RUN_CFG : show parsed run settings
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
  -t -D DUMP_MODULES : show all loaded modules 
  -M                 : a synonym for -t -D DUMP_MODULES
  -t -D DUMP_INCLUDES: show all included configuration files
  -t                 : run syntax check for config files
  -T                 : start without DocumentRoot(s) check
  -X                 : debug mode (only one worker, do not detach)
-t -D DUMP_INCLUDES: show all included configuration files


に書いてあるように、「設定ファイルを全て表示する」というものが存在しているのだから、これを実行する。

apachectl -t -D DUMP_INCLUDES

↓(結果:これは私の環境での結果)

apachectl -t -D DUMP_INCLUDES
Included configuration files:
  (*) /private/etc/apache2/httpd.conf
    (491) /private/etc/apache2/extra/httpd-mpm.conf
    (497) /private/etc/apache2/extra/httpd-autoindex.conf
    (537) /private/etc/apache2/other/php5.conf

php5 があるので、こちらはこちらはコメントアウトして php7 にしたい。
php7の設定ファイルが存在するかどうか確認。

ls -al /private/etc/apache2/other/

total 0
drwxr-xr-x   3 root  wheel  102  8  9 08:35 .
drwxr-xr-x  11 root  wheel  374  9 21 22:34 ..
-r--r--r--   1 root  wheel  194  8  9 08:35 php5.conf

存在していない。

php -v

PHP 7.1.0 (cli) (built: Dec  2 2016 11:32:42) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.1.0, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

コマンドラインでは php7 が存在している。
http と php をつなぐ何かがあるはず…

brew search http

darkhttpd                                  httperf
homebrew/apache/httpd22                    httpie
homebrew/apache/httpd24 ✔                  httping
homebrew/php/php53-http                    httpry
homebrew/php/php54-http                    httpstat
homebrew/php/php54-httpparser              httptunnel
homebrew/php/php55-http                    libhttpserver
homebrew/php/php55-httpparser              libmicrohttpd
homebrew/php/php56-http                    lighttpd
homebrew/php/php56-httpparser              mighttpd2
http-parser                                nghttp2
http_load                                  slowhttptest
httpdiff                                   weighttp
homebrew/emacs/know-your-http-well
homebrew/emacs/simple-httpd
homebrew/nginx/http-accounting-nginx-module
homebrew/nginx/http-flood-detector-nginx-module
homebrew/nginx/http-remote-passwd-nginx-module
Caskroom/cask/httpscoop

homebrew/php/php56-http があるのに、php7 がない!

そして初めてググる

brew httpd php7

homebrewでapache2.4とphp7.0.7をインストール

ちなみにphpインストールコマンドに--homebrew-apxsを付与すると、、

LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so

この一文がhttpd.conf(apache設定ファイル)に自動的に追記され、apache側がこのphpを(もしpcの中に色んなphpが混在していても)判別し、ブラウザで実行することができるようになる。これがないとこのphpはブラウザで(というかapacheで)認識できない。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/14 13:48 編集

    収集しても、真偽の判別つかないと混乱するだけですよね。
    単純に、ちゃんとメッセージを読んでいるかどうか、自分の手元で何が起きたのかを正確に把握できているかどうかだと思います。
    エラーになる時って、同じ現象を経験していることは皆無です。初心者でもそうでなくても、同じように初めてのエラーに遭遇しているのです。エラーメッセージをちゃんと読んで、調べ、自分の起きている現象と情報を照らし合わせて、そこに書いてある意味を正確に把握できるかどうかだと思います。

    sskさんの場合はちゃんとエラーメッセージの記述してくれていますが、回答者として利用していると、そもそも質問文にエラーメッセージを書かない人がかなり見受けられます。書かないということ=「読んでいない」or「読もうともしていない」と思うので、そもそも適性がないのでは?と思うことしばしば。

    キャンセル

  • 2016/12/14 14:05

    >自分の手元で何が起きたのかを正確に把握できているか
    仰る通りです。なんとなくの理解で手を動かし始め、エラーエラーエラーでした。
    早く開発環境を作りたいと思う気持ちが先行していたからだと思います。反省します。

    お陰様でなんとか開発環境を作ることができました。
    本当にありがとうございました。

    キャンセル

  • 2016/12/14 20:51

    ともかく、良かったですね!
    じゃあ、一旦まっさらにして、再度構築してみましょう。
    繰り返しできないと覚えたことにはならないので。

    ↑冗談ですが、会社ではこんな感じで叩き込みます。

    キャンセル

0

エラーの内容は、phpのintl拡張が入っていないというものなので、php-intlパッケージをインストールすれば次に進めると思いますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/13 14:24

    icchii様

    すでに
    sudo port install php70-intl
    をターミナルで実行しており

    sudo find / -name *intl.so
    で探すと

    find: /dev/fd/name: No such file or directory
    find: /dev/fd/name: No such file or directory
    /opt/local/lib/php70/extensions/no-debug-non-zts-20151012/intl.so

    と返ってきます。

    キャンセル

  • 2016/12/13 14:30

    なるほど、了解です。インストールしたけど認識されていないということですね。
    ・Apacheを再起動しても変わらないですか?
    ・以下のコマンドを実行してintl.soを読み込む処理があるか探してみてください。
    $ grep -rI intl.so /opt/local/etc/

    キャンセル

  • 2016/12/13 14:33

    Apacheを再起動してもエラー文に変化なしでした。

    grep -rI intl.so /opt/local/etc/
    を実行したところ、読み込む処理もなかったです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る