こんにちは、ファルコンM です。
今回やりたいこと
- ローカルでCakePHP を使ったPHPプロジェクトを作成する。
- そのPHPプロジェクトをさくらVPS Ubuntu にgit push する。
- git push と同時に自動で、サイトに公開する。
前段として、ローカルでCakePHPをインストールする。
開発環境
ローカル側
- windows10 64bit
- Apache2.4.26
- PHP 7.1.7
- MySQL 5.6.37
- Composer 1.5.2
サーバー側
- さくらVPS 1Gプラン
- Ubuntu 16.04
- Apache2.4.18
- PHP 7.0.22
- MySQL 5.7.19
ローカル側とサーバー側で合わせたいところだが、それは今後の課題とする。
ローカルでCakePHP を使ったPHPプロジェクトを作成する
PHP、Composer はインストールされているものとする。
コマンドプロンプトを起動し、プロジェクトを作成したいフォルダまでカレントを移動しておく。
以下のコマンドを実行する。
composer create-project --prefer-dist cakephp/app (プロジェクト名)
早速1つ目のエラー
エラーが発生した。
Problem 1
– cakephp/cakephp 3.5.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
– cakephp/cakephp 3.5.2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
– cakephp/cakephp 3.5.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
– cakephp/cakephp 3.5.0 requires ext-intl * -> the requested PHP extension intl is missing from your system.
– Installation request for cakephp/cakephp 3.5.* -> satisfiable by cakephp/cakephp[3.5.0, 3.5.1, 3.5.2, 3.5.3].
なるもの。どうやらintl の設定がまずいようだ。
php.ini を調べて、extension=php_intl.dll の行がコメントアウトになっていたが、コメントを外した。
そして再度コマンドを実行すると、無事プロジェクトが作成された。
ビルドインサーバーで動作させてみる。( Apache 関係ないんかい!!!って突っ込みは知らない )
$ php -S localhost:9000 -t [プロジェクトのパス]
その後、http://localhost:9000/ にブラウザからアクセスしてみると、、、
… またエラーが発生した。
PHP Warning: require([プロジェクトの場所]/vendor/autoload.php): failed to open stream: No such file or directory in [プロジェクトの場所]\webroot\index.php on line 31
[Fri Oct 13 10:27:24 2017] PHP Stack trace:
[Fri Oct 13 10:27:24 2017] PHP 1. {main}() [プロジェクトの場所]\index.php:0
[Fri Oct 13 10:27:24 2017] PHP 2. require() [プロジェクトの場所]\index.php:16
[Fri Oct 13 10:29:16 2017] PHP Fatal error: require(): Failed opening required [プロジェクトの場所]/vendor/autoload.php’ (include_path=’.;C:\php\pear’) in [プロジェクトの場所]\webroot\index.php on line 31
vendor/autoload.php がないって言われている。。。
よく考えたら、再度コマンド実行して無事プロジェクトが作成されたと言ってたけど、ちょっと違和感あったメッセージが。。
[InvalidArgumentException] Project directory [アプリ名] is not empty.
最初にプロジェクト作成で失敗したとき、中途半端にプロジェクトが残っていたみたいだ。
ということで、プロジェクトごとゴミ箱に移して、再再度コマンドを実行すると、無事プロジェクトが作成された。
ブラウザのアクセスも上手くいったようだ。
ただ、画面が思っていたのと違う。字だけだ。いいのかな?
いや、こんなエラーが発生していた。
URL rewriting is not properly configured on your server
いろいろと調べた結果、cakePHP の.htaccess を有効にして、かつmod_rewriteを有効にしてやらないと駄目みたいだ。どうもcakePHPの内部でリロード処理が動いているっぽい。
ビルドインサーバーは設定方法が分からないので、Apache でできるかやってみた。
http.conf
略 LoadModule rewrite_module modules/mod_rewrite.so ← コメントを外す 略 ↓↓↓ 追加 <Directory "${SRVROOT}/htdocs/cakePHP"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ↑↑↑ 追加
<Directory “${SRVROOT}/htdocs/ ></Directory> 内が AllowOverride None の設定だったので、cakePHPを使うところだけAllowOverride を許可する設定とした。
それで、Apache に作成したフォルダをそのままコピペしたら、、、
ちゃんと表示された。
ビルドインサーバーではできないのか?
分からない。ただ、もっと調べてみると、cakePHP にサーバーがあるみたいで
$ cd (プロジェクトのパス) $ bin/cake server
とすると、サーバーが起動した。
http://localhost:8765/ にブラウザからアクセスすると、
ちゃんと表示された。
なんかいろいろはまりまくったけど、cakePHP がローカルで動かせることが分かってよかった。同じ環境をさくらVPS Ubuntu にgit push して動作することを祈ろう!
コメントを残す