FuelPHPでindex.phpを省略する方法
fuel/app/config/config.phpを編集
/** * index_file - The name of the main bootstrap file. * * Set this to 'index.php if you don't use URL rewriting */ -//'index_file' => false, + 'index_file' => false,
PROJECT_Directory/public/.htaccessを編集
# Remove index.php from URL -#RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$ -#RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] -#RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L] # Remove index.php from URL +RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$ +RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] +RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L]
/etc/apache2/apache2.confの先頭に#がついてない全てのAllowOverride NoneのところををAllに変更。
変更が必要ないところもあるので以下をよく確認してください。ずべてコピペはあまりオススメしません。
<Directory /> Options FollowSymLinks AllowOverride All Require all denied </Directory> <Directory /usr/share/> AllowOverride All Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> #<Directory /srv/> //変更する必要なし// # Options Indexes FollowSymLinks # AllowOverride None # Require all granted #</Directory> # AccessFileName: The name of the file to look for in each directory # for additional configuration directives. See also the AllowOverride # directive. # AccessFileName .htaccess //変更する必要なし// #
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.ht"> //変更する必要なし//
Require all denied
</FilesMatch>
以上の設定をするだけでindex.phpが省略されると書かれていますが自分はそううまくはきませんでした。FuelPHPのバージョンやUbuntuの環境による違いもあると思います。自分のマシンは凝った設定はしておらず、最近Ubuntu Server 16.04.1 LTSをインストールし、EmacsとFuelPHPを入れたくらいです。
引き続き/etc/apache2/apache2.confの最終行に以下の設定を加えたらindex.phpを省略できました。
*下記参考サイトではlibexec/apache2/mod_rewrite.soの読み込みを有効にしていますが2016年12月23日時点で自分の環境でsudo findしてもlibexec/apache2/内にmod_rewrite.soは見つかりませんでした。/usr/libexecはなくて/usr/lib/apache2/modules/内にありました。
+LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
apacheを再起動するのも忘れずに。(大事)
stnet@m1:$ sudo systemctl restart apache2
参考サイト。
〜FuelPHP〜 oil generate migrationでMySQLのテーブルを作る
ブログなどのコンタクトフォームから送信されたデータを保存する時はデータベースが必要になってきます。今回はFuelPHPでコンタクトフォームを作るときを想定してMySQLでデータベースとテーブルを作りたいと思います。
まずMySQLにログイン
stnet@m1:$ mysql -u root -p
データベースを作ります。はじめ oil generate migration でデータベースも作ってくれるのかと思っていましたが手動で作る必要があります。ここでは例としてデータベース名をmysql_devとし、デフォルトの文字コードをUTF-8にするときを想定します。
mysql > create database mysql_dev default character set utf8;
テスト環境のデータベースを作ってもいいでしょう。ここではデータベース名をmysql_testとし、同様にデフォルトの文字コードをUTF-8にするときを想定します。
mysql > create database aizu_uni_2016_test default character set utf8;
ユーザーにデータベースを扱う権限を追加
mysql > grant all privileges on mysql_dev.* to username@localhost identified by 'passwd';
同様にテスト環境用にも。identified 以降は省略してもk構いません
mysql > grant all privileges on mysql_test.* to username@localhost; mysql > \q
マイグレーションによるテーブルの作成にはfuel/core/config内のmigrations.phpを以下のフォルダにコピーしてあげる必要があります。
stnet@m1:$ cp fuel/core/config/migrations.php fuel/app/config/development/ stnet@m1:$ cp fuel/core/config/migrations.php fuel/app/config/test/
次にfuel/app/config/db.phpを編集
<?php /** * Use this file to override global defaults. * * See the individual environment DB configs for specific config information. */ return array( 'default' => array( 'type' => 'mysqli', 'connection' => array( 'persistent' => false, ), 'charset' => 'utf8', 'collation' => false, 'enable_cache' => true, 'profiling' => false, 'readonly' => false, ), );
developmentディレクトリにコピーしたdb.phpを編集
<?php /** * The development database settings. These get merged with the global settings. */ return array( 'default' => array( 'connection' => array( //'dsn' => 'mysql:host=localhost;dbname=mysql_dev', 'hostname' => 'localhost', 'port' => '3306', 'database' => 'databasename', 'username' => 'username', 'password' => 'password', ), ), ); return array( 'profiling' => true, );
<?php /** * The test database settings. These get merged with the global settings. * * This environment is primarily used by unit tests, to run on a controlled environment. */ return array( 'default' => array( 'connection' => array( //'dsn' => 'mysql:host=localhost;dbname=mysql_test', //'username' => 'fuel_app', //'password' => 'super_secret_password', 'hostname' => 'localhost', 'port' => '3306', 'database' => 'databasename', 'username' => 'username', 'password' => 'password', ), ), );
データベースを定義
stnet@m1:$ oil generate migration create_form id:int username:string[50] email:string[100] message_text:string[400] imgpath:string[512] created_at:int uploaded_at:int
最後に、定義したデータベースを実際に作成します。
stnet@m1:$ oil refine migrate
refineが成功したら何もエラーがでないはずです。
PostgreSQLとPHPでAutocompleteを作る Part 1
今回はskillsという名前のMySQLのSQLファイルを変換してPostgreSQL用にダンプファイルを作成します。 (これがなかなか時間かかりました......) それについても書きたいと思います。
※最近まで手順がばらばらのまま記事を掲載しておりました。お詫びいたします。また初心者にもわかりやすいように言い回しがくどい箇所があるかもしれません。ご了承ください。
SQLファイルはこちら
※emacsなどにコピーした後にファイルの拡張子を.sqlにしてください。
https://drive.google.com/file/d/0B7YeptbCjhpaTVRoN3VMTjI4eW8/view?usp=sharing
MySQLでデータベースを作成する
はじめにMySQLを起動(ここではmysqlをインストールした前提になります)
mysql> show databases;
すると以下のようになると思います。(個人の環境によって違う場合もあります)
MySQLでcreate databaseする。今回はskillsというデータベースを作ります。(このときcreate databaseしないで次に進めばUnknown databaseとなるので注意。)
mysql> create database skills;
もう一度show database;として、skillsというデータベースが作成されていることを確認してください。
MySQLにデータを格納します。
mysql -u root -D mysql -p < skills.sql
いったんexitとしたいところですが、ここでテーブルも作っておかないと
このように表示されてしまいます。ということでMySQLでテーブルを定義しましょう。
sqlファイルをリダイレクトしてデータベースに格納します。
stnet@m1:$ mysql -u root -D skills -p < skills.sql
MySQLからPostgreSQL用のファイルに変換する
ファイルがある場所でダンプコマンドを実行します。今回はdatabase_nameとtable_name、filenameをskillsとします。
mysqldump -uroot -p database_name --compatible=postgresql -t -c --skip-quote-names --skip-extended-insert --skip-add-locks --default-character-set=utf8 table_name | sed "s/\\\'/\'\'/g" > dump-filename.sql
PostgreSQLでcreate databaseする。今回はskillsというデータベースを作ります。
stnet@m1:$ sudo -i -u postgres [sudo] password for {usename}: postgres@m1:~$ psql psql (9.5.5) Type "help" for help. postgres=# create database skills;
今回の目的はダンプしたdump-skills.sqlをPostgreSQLのデータベースに格納したいのでMySQLと同様にPostgreSQLでもCREATE DATABASEしましょう。続けてテーブルも作らないと以下のようなエラーになります。
Password for user postgres: ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (1,'ActionScript'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (2,'AppleScript'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (3,'Asp'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (4,'Basic'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (5,'C'); ^ ERROR: relation "skills" does not exist LINE 1: INSERT INTO skills (id, skill) VALUES (6,'C++'); ^ . . . .
ということでPostgreSQLでテーブルを作成
変換したファイルでPostgreSQLのデータベースを作成する
stnet@m1:$ psql -U postgres -d skills < dump-skills.sql
をすると
INSERT 0 1 というのが続けばデータの格納がうまくいっています。
selectを使ってskillsデータベースを確認してみましょう。ここまででautocompleteの下準備が出来上がりました。
stnet@m1:$ sudo -i -u postgres postgres@m1:$ psql skills Password: psql (9.5.4) Type "help" for help. skills=# select * from skills;
次回はPHPファイルを作ってPostgreSQLとconnectし、Autocompleteを実現について描いていきたいと思います。
自作PCに挑戦しました!
2016/7月。
自作PCが完成しました。今までやってみたかったことの一つがようやくできました。
去年Skylakeが出たあたりから自作PCやりたいと思うようになり、構成をゆっくり考えていました。
一時は持ち運びができる方がいいんじゃないかなぁってことでノートPCを買いたいと思っていた時期もありましたが、
やっぱりメインPCはデスクトップがいいと思ってPCを自作することに決めました。
それがだいたい今年の3月頃です。そしてパーツを少しずつ買い揃えました。
一番悩んだのは全体の予算とPCケース。
予算に関して。特に円高が進んでいたことやメモリの供給過剰?ということが重なり、メモリは去年に比べて半額、さらには1/3くらいの価格になってるものもありました。
そのため買う時期を見極めるのがちょっと難しかったです。
はじめ8GBを購入しましたがどんどん価格が落ち込むので8GBを売って16GBを買いました。
そしてケース。なかなかいいのが見つかりませんでした。自分の好みはシンプルで癖のないデザイン。
去年NTT-X Storeで購入したServer Primergy TX1310にUbuntuを入れてサーバー立てましたが、そのケースはとても自分の好みでした。
Primergyに似てるケースを探してましたが天板はペコペコするとか裏配線に対応してないとか........価格.comの口コミやいろいろなブログを頼りに絞り込んでいきました。
結果、以下の構成になりました。
パーツ名 | 型番・商品名 | 価格 |
---|---|---|
CPU | Core i7 6700K BOX | 37,350円 |
CPUクーラー | Macho120 SBM | 6,698円 |
マザーボード | H170-PRO | 13,179円 |
メモリ | CT2K8G4DFD8213 | 6,393円 |
ビデオカード | GTX 960 GAMING 2G FFTZ | 20,980円 |
電源 | KRPW-GT600W/90+ | 9,796円 |
SSD | CT250MX200SSD | 8,670円 |
ケース | SST-PS11B-Q | 6,700円 |
グリス | JP-DX1[ナノダイヤモンドグリス 3g] | 1,420円 |
SATAケーブル | TK-SATA3-07SL ×2 | 1,690円 |
OS | Windows 10 Pro 日本語版 USB | 23,600円 |
合計 | 136,476円 |
バランスはいいとは言えませんね。
ただゲームやらないとはいえ5年くらい使うこと想定してるのでビデオカードはGTX 960 でちょうどいいかも。
失敗したのはマザーボードはH170なのにOCモデルのCPUをチョイスしてしまったこと。でも4GHzだから結構サクサクです。
あとここには書いてませんがCPUクーラーを虎徹にしようと思って買ったもののケースに入りませんでした(笑)。自作PCあるあるだそうです。
だから大きめだけどちょうどよく収まるMachoにしました。
なかなか大きな出費でしたね。でも長く使えることでしょう。
ブログ始めました
今までブログを始めては辞めを何回か繰り返してました。
ブログ始めてこれからいろいろ書いてみるぞ!ってなってたのもつかの間。なんだかんだ忙しくなると書かなくてもいいかなってなる。
でも、就活も終わったし、最近また始めたくなってまた登録してみました。
勉強したり研究してて初めて知ったこと、大事だなって思ったことを忘備録として書いてみようと思います。
書くことも好きだけど人のブログを見るのも好きなのでいろんな人たちのブログも覗いてみようと思います。
周りの友達でブログやってる人は少ないから残念。
やっていても教えないのかな。