ブログのソースコードに色つけるやつを変えた

WordPressのクレヨンとかいうやつから、ここに書いてあるHighlight.jsのやつに変えた。ついでにマークダウンも追加した。クレヨンはpreで囲まれた中身を自動で変換するが、highlight.jsはpre > codeで囲まれた中身を変換するので、シンプルな移管ができなそうな状況になった。ちょっと調べたけど、対応するタグをpre >
code
以外にも追加するようなことはできないっぽいので、データベースのprepre > codeに変換することにした。一応バックアップとった。

いいプラグインを発見した。正規表現も使えるので、これを使ったら一瞬で終わった。
Search Regexプラグインの使い方

cakephp3 – DB設定時のTime Zoneエラー

Windows10でXampp使ってcakephp3を動かすとき、DB設定のtimezoneをAsia/Tokyoにすると下記エラーがでた。
General error: 1298 Unknown or incorrect time zone: ‘Asia/Tokyo’

対処法は、ここのとおりやったらできた。

ここから、timezone_2017a_posix_sql.zipをダウンロード・展開して、出てきたsqlファイルをどこかに置く。

そして、下記のようにやる。
$ cd /d/xampp/mysql/bin
$ ./mysql -u root mysql -p < /e/timezone_posix.sql

GCPでUbuntu16・Nginx・PHP7・cakePHP3環境をつくる

Google Cloud Platform(GCP)はAWSのgoogle版です。ここにサービスの説明があります。

Compute Engine

まずプロジェクトを作成する。次に、Compute Engineのコンソールで、VMインスタンスを作成する。ゾーンを日本、マシンタイプをf1-micro、OSをUbuntu16.10で作成してみた。数十秒程度でインスタンスが作成完了し、ブラウザ上でssh接続、ターミナル操作がすぐ可能になった。

マシンタイプの変更方法

参考:vm instanceのMachine type変更方法
IPをスタティックにして、ディスクを削除しないようにしながら、VMインスタンスを削除して、新しくインスタンスをつくるらしい。この間サーバは止まってしまう。でもいずれにしても結構簡単に切替は可能。

ローカル環境でssh接続できるようにする

google cloud SDKをインストールする。インストール完了したら初期設定が動き出すので、ログインしたりゾーン選択したりする。
Compute EngineのVMインスタンスの画面にある、ssh接続用のgcloudコマンドを実行する。これでssh接続できた。

PHPとかNginxとかをインストールする

$ sudo apt-get update
$ sudo apt-get install php
$ php -v
PHP 7.0.15-0ubuntu0.16.10.4 (cli) ( NTS )
$ sudo apt-get install nginx
$ nginx -v
nginx version: nginx/1.10.1 (Ubuntu)
$ sudo apt-get install git vim composer

デフォルトでapache2が入っていて起動されているようだ。
$ sudo systemctl stop apache2
$ sudo systemctl start nginx

Cloud DNS

https://cloud.google.com/dns/quickstart
上記に従って、DNS APIを有効にして、DNSコンソールからドメインを追加する。記載されているネームサーバに合わせて、ドメインのネームサーバを変更して、必要な設定をすると反映される。

Cloud SQL

Google Cloud SQL ドキュメント
Cloud DNSと同様にAPIを有効にしてインスタンスを作成する。Compute Engineから接続するには、ネットワークの承認が必要。下記にやり方が書いてあった。
MySQL クライアントを Compute Engine から接続する

Compute Engineを設定してCakephp3を動かす

$ sudo vim /etc/nginx/sites-available/default

server {
    listen 80;
    server_name hoge.com;
    root /var/www/html/hoge.com/webroot;
    index index.php;
    location / {
        try_files $uri $uri?$args $uri/ /index.php?$uri&$args /index.php?$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

$ sudo systemctl restart nginx
$ cd /var/www/html
$ sudo apt-get install php-fpm php-intl php-mbstring php-zip
$ sudo composer create-project –prefer-dist cakephp/app hoge.com

Compute EngineをCloud SQLにつなぐ

phpmyadminを使う

$ sudo apt-get install mysql-client
$ sudo apt-get install phpmyadmin
$ sudo vim /etc/phpmyadmin/config-db.php

config-db.php

$dbname='hoge';
$dbserver='<Cloud SQLのIPアドレス>';
$dbport='3306';
$dbtype='mysql';

$dbnameがないとエラーになるけど、内容は適当でも大丈夫だった。

$ sudo echo “hoge:$(openssl passwd -apr1 hogepassword)” > /path/to/hogepath
$ sudo chmod 604 /path/to/hogepath
$ sudo vim /etc/nginx/sites-available/default

#Phpmyadmin
server {
    listen 80;
    server_name hogehoge.com;
    auth_basic 'input';
    auth_basic_user_file /path/to/hogepath;
    root /usr/share/phpmyadmin;
    location / {
        index index.php;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

コマンドラインでmysqlにつなぐ

$ mysql –host=[INSTANCE_IP_ADDR] –user=root -p

cakephp3でmysqlにつなぐ

$ sudo vim /var/www/html/hoge.com/config/app.php
hostをCloud SQLにする。

Let’s EncryptでSSL取得・設定

hoge.comとphpmyadminをhttps接続のみ可能にする。hoge.comにhttpアクセスした場合はhttpsにリダイレクトさせる。

$ sudo apt-get install letsencrypt
$ sudo systemctl stop nginx
$ sudo letsencrypt certonly –standalone -d hoge.com
$ sudo letsencrypt certonly –standalone -d hogehoge.com
$ sudo systemctl start nginx
$ sudo vim /etc/nginx/sites-available/default

#hoge.com cakephp3
server {
    listen 80;
    server_name hoge.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
    server_name hoge.com;
    root /var/www/html/hoge.com/webroot;
    index index.php;
    location / {
        try_files $uri $uri?$args $uri/ /index.php?$uri&$args /index.php?$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}
#Phpmyadmin
server {
    listen 443;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/hogehoge.com/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem;
    server_name hogehoge.com;
    auth_basic 'input';
    auth_basic_user_file /path/to/hogepath;
    root /usr/share/phpmyadmin;
    location / {
        index index.php;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

$ sudo systemctl restart nginx

購買型クラウドファンディング構築システム『Fundee Scratch』をつくりました

Fundee Scratchとは?

購買型のクラウドファンディングサイトを簡単に作成できるパッケージシステムです。https://fundee.inでASPとして運営していた実績を基に作成したので、安定しています。特に良質なプロジェクトを集められる方でしたら、手数料をご自分で決定できるパッケージはいいと好評いただいています。PHPで作成されており、フレームワークはcakePHPを使っています。ソースコードの難読化などはもちろんしていませんので、自由にカスタマイズしていただけます。

紹介サイト・デモサイト

紹介サイトは下記になります。
http://crowdfunding-system.biz/

デモサイトは下記です。
http://demo.crowdfunding-system.biz/

決済について

  • 決済は、購買型のAll or Nothing型のみ現在は対応しております。
  • クレジットカードのvisa、masterに対応しています。

決済代行会社について

決済はGMOペイメントを利用しておりますが、これには理由があります。

他の非常に安い決済サービスだと、仮売上(オーソリ)に十分対応していない。

  • webpayは、仮売上機能は、最大45日までです。つまり、プロジェクトの募集が最大45日までしかできません。
  • SPIKEは、月10万まで無料ということで面白いのですが、仮売上機能がそもそもありません。

プロジェクトの規模が制限される

  • paypalは、そもそもクラウドファンディングは慎重姿勢ということで、1件のプロジェクト当たり最大30万までと言われました。つまり大規模なプロジェクトは一切公開できません。

以上のように、それぞれ安くてよさそうな決済サービスもクラウドファンディングの利用には適していませんでした。一方GMOペイメントは、仮売上機能が最大90日(だったはず)まで使えるので、長期間のプロジェクトも公開可能ですし、大規模プロジェクトも問題なく公開可能です。デメリットは、初期費用は月額費用が上記のような決済代行会社と比べると必要になる点です。

もし、初期・月額を抑えたいということでしたら、さすがに、1プロジェクト30万までだと小さすぎるケースが多いと思うので、webpayの45日以内を前提に運営するといいかもしれないと思いました。決済手数料は、3.25%とかで、GMOペイメントと同じかちょっと安いくらいで、初期・月額無料ですので。webpayバージョンもつくってみようかなと思ってます。

金額

金額は、40万円ですが、今だけ半額提供中です。20万円(税別)です。

cakephp2 – database.phpの情報でmysqlのpdoで接続する

cakephp2で、database.phpの情報でmysqlのpdoで接続する方法。

下記で、database.phpで設定している内容を取得できる。

include_once APP.'Config'.DS.'database.php';
if(class_exists('DATABASE_CONFIG'))
{
    $this->db_config = new DATABASE_CONFIG();
}

下記で、dbに接続できる。

private function connect_db()
{
    try
    {
        $this->pdo = new PDO('mysql:host='.$this->db_config->default['host'].';dbname='.
                             $this->db_config->default['database'].';charset=utf8',
                             $this->db_config->default['login'], $this->db_config->default['password']);
    }
    catch(PDOException $e)
    {
        exit('データベース接続失敗。'.$e->getMessage());
    }
}

下記で、データベースに存在するテーブルをすべて削除できる。

private function drop_tables()
{
    try
    {
        $stmt = $this->pdo->query('SHOW TABLES');
        $tables = $stmt->fetchAll();
        foreach($tables as $tbl)
        {
            $this->pdo->exec('drop table if exists '.$tbl[0]);
        }
    }
    catch(PDOException $e)
    {
        exit('テーブル削除失敗。'.$e->getMessage());
    }
}

下記で、データベースにsqlをインポートできる。

private function import_sql()
{
    $sql = $this->get_sql();
    try
    {
        return $this->pdo->exec($sql);
    }
    catch(PDOException $e)
    {
        exit('sqlインポート失敗。'.$e->getMessage());
    }
}
private function get_sql()
{
    try
    {
        return file_get_contents($this->sql_path);
    }
    catch(Exception $e)
    {
        exit('sqlファイル取得失敗。'.$e->getMessage());
    }
}

Mac El Capitan – MySQLインストール・設定

Macの状態

  • El Capitan 10.11.5です。
  • brewはインストール済みです。

MySQLインストール

$ brew install mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.7.12.el_capitan.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/mysql-5.7.12.el_capitan.bottle.tar.gz
==> Pouring mysql-5.7.12.el_capitan.bottle.tar.gz
==> /usr/local/Cellar/mysql/5.7.12/bin/mysqld --initialize-insecure --user=hoge --basedir=/usr
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

To connect run:
    mysql -uroot

To have launchd start mysql now and restart at login:
  brew services start mysql
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
🍺  /usr/local/Cellar/mysql/5.7.12: 13,281 files, 444.8M

MySQL起動

$ mysql.server start
Starting MySQL
. SUCCESS! 

MySQL起動時のエラー

$ mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/air.local.pid).

macを再起動したらなおった。mysqlを再インストールしてもなおらなかった。

MySQLの初期設定

rootパスワードの強度設定、新パスワード作成、アクセス制限などをする。全部yとしておく。

$ mysql_secure_installation

MySQLを使ってみる

$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.12 Homebrew

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

phpMyAdminをインストール

phpMyAdminをダウンロードする

https://www.phpmyadmin.net/downloads/から、phpMyAdmin-4.6.2-all-languages.zipをダウンロードして、解凍する。

配置・設定

$ sudo cp -rp phpMyAdmin-4.6.2-all-languages /Library/WebServer/Documents/phpMyAdmin
$ cd /Library/WebServer/Documents/phpMyAdmin
$ sudo mv config.sample.inc.php config.inc.php

ブラウザで見てみる

http://localhost/phpmyadmin/

———————
追伸:
phpMyAdminもbrewでインストールできた。

brewでphpMyAdminをインストール

参考:https://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/

$ brew install autoconf
$ echo 'PHP_AUTOCONF="'$(which autoconf)'"' >> ~/.bash_profile && . ~/.bash_profile
$ brew install phpmyadmin

〜
中略
〜

Webserver configuration example (add this at the end of
your /etc/apache2/httpd.conf for instance) :
  Alias /phpmyadmin /usr/local/share/phpmyadmin
  <Directory /usr/local/share/phpmyadmin/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_authz_core.c>
      Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
      Order allow,deny
      Allow from all
    </IfModule>
  </Directory>
Then, open http://localhost/phpmyadmin

More documentation : file:///usr/local/Cellar/phpmyadmin/4.6.1/share/phpmyadmin/doc/

Configuration has been copied to /usr/local/etc/phpmyadmin.config.inc.php
Don't forget to:
  - change your secret blowfish
  - uncomment the configuration lines (pma, pmapass ...)

==> Summary
🍺  /usr/local/Cellar/phpmyadmin/4.6.1: 2,255 files, 63.1M, built in 14 seconds

Nginxの設定(例)

$ vim /usr/local/etc/nginx/nginx.conf

下記を最後に加える

server {
    listen 8080;
    server_name local.com;
    root /usr/local/share/phpmyadmin/;
    index index.php;
    
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

cloud9でcakephp3・MySQLを使う

cloud9プロジェクトの作成

cloud9でPHPを選択してプロジェクトを作ります。

MySQLの起動

$ mysql-ctl start
Installing MySQL
 * Stopping MySQL database server mysqld
   ...done.
 * Starting MySQL database server mysqld
   ...done.
 * Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly.

MySQL 5.5 database added.  Please make note of these credentials:

       Root User: hgoe
   Database Name: hoge

 * Starting MySQL database server mysqld
   ...done.

phpMyAdminのインストール

$ phpmyadmin-ctl install
Starting installation
Starting MySQL
 * Starting MySQL database server mysqld
   ...done.
Configuring database
Starting apache
 * Restarting web server apache2
   ...done.
PHPMyAdmin Installation complete. You can log in at: https://hoge-hoge.c9users.io/phpmyadmin with the following username (and blank password):

       Username: hoge

上記URLにアクセスしたらphpMyAdminが表示される。初期ではusernameと、パスワード空で入れる。root以外のユーザを作成したりする。

composerのインストール

$ curl -sS https://getcomposer.org/installer | php
Downloading 1.1.1...

Composer successfully installed to: /home/ubuntu/workspace/composer.phar
Use it: php composer.phar
Some settings on your machine may cause stability issues with Composer.
If you encounter issues, try to change the following:

The xdebug extension is loaded, this can slow down Composer a little.
Disabling it when using Composer is recommended.

composerを移動する

$ sudo mv composer.phar /usr/local/bin/composer

cakeプロジェクトの作成

$ composer create-project cakephp/app caketest
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug

Installing cakephp/app (3.2.6)
  - Installing cakephp/app (3.2.6)
    Downloading: 100%         

Created project in caketest
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing aura/installer-default (1.0.0)
    Downloading: 100%         

  - Installing cakephp/plugin-installer (0.0.15)
    Downloading: 100%         

  - Installing psr/log (1.0.0)
    Downloading: 100%         

  - Installing mobiledetect/mobiledetectlib (2.8.22)
    Downloading: 100%         

  - Installing aura/intl (1.1.1)
    Downloading: 100%         

  - Installing cakephp/chronos (0.4.9)
    Downloading: 100%         

  - Installing cakephp/cakephp (3.2.9)
    Downloading: 100%         

  - Installing symfony/yaml (v3.0.6)
    Downloading: 100%         

  - Installing symfony/filesystem (v3.0.6)
    Downloading: 100%         

  - Installing symfony/config (v3.0.6)
    Downloading: 100%         

  - Installing symfony/polyfill-mbstring (v1.2.0)
    Downloading: 100%         

  - Installing symfony/console (v3.0.6)
    Downloading: 100%         

  - Installing robmorgan/phinx (v0.5.3)
    Downloading: 100%         

  - Installing cakephp/migrations (1.6.1)
    Downloading: 100%         

  - Installing jakub-onderka/php-console-color (0.1)
    Downloading: 100%         

  - Installing jakub-onderka/php-console-highlighter (v0.3.2)
    Downloading: 100%         

  - Installing dnoegel/php-xdg-base-dir (0.1)
    Downloading: 100%         

  - Installing nikic/php-parser (v2.1.0)
    Downloading: 100%         

  - Installing symfony/var-dumper (v3.0.6)
    Downloading: 100%         

  - Installing psy/psysh (v0.7.2)
    Downloading: 100%         

  - Installing jdorn/sql-formatter (v1.2.17)
    Downloading: 100%         

  - Installing cakephp/debug_kit (3.2.8)
    Downloading: 100%         

  - Installing cakephp/bake (1.2.4)
    Downloading: 100%         

cakephp/app suggests installing phpunit/phpunit (Allows automated tests to be run without system-wide install.)
cakephp/app suggests installing cakephp/cakephp-codesniffer (Allows to check the code against the coding standards used in CakePHP.)
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/process ()
symfony/var-dumper suggests installing ext-symfony_debug ()
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
cakephp/debug_kit suggests installing ext-sqlite (DebugKit needs to store panel data in a database. SQLite is simple and easy to use.)
Writing lock file
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Created `config/app.php` file
Set Folder Permissions ? (Default to Y) [Y,n]? Permissions set on /home/ubuntu/workspace/caketest/tmp/cache
Permissions set on /home/ubuntu/workspace/caketest/tmp/cache/models
Permissions set on /home/ubuntu/workspace/caketest/tmp/cache/persistent
Permissions set on /home/ubuntu/workspace/caketest/tmp/cache/views
Permissions set on /home/ubuntu/workspace/caketest/tmp/sessions
Permissions set on /home/ubuntu/workspace/caketest/tmp/tests
Permissions set on /home/ubuntu/workspace/caketest/tmp
Permissions set on /home/ubuntu/workspace/caketest/logs
Updated Security.salt value in config/app.php

プレビューを見る

cloud9のメニューのPreviewからプレビューを開く。database.phpの設定がまだだが、とりあえず初期画面が表示される。

cake3

database.phpの設定

config/app.phpの229行目に下記があるので、修正する。

'username' => 'hoge',
'password' => 'hoge',
'database' => 'hoge',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,

RDSからEC2のmysqlに移す

RDSは便利ですが、高かったです。

EC2のMySQLのバックアップ

RDS運用の前はEC2のMySQLで運用していたので、古いですが現状のEC2のMySQLを一応バックアップしておきます。

$ sudo mysqldump --databases hogehoge --single-transaction --order-by-primary -r backup.sql -u root -p

EC2のMySQLのデータベースを空にする

$mysql -u root -p
mysql> use hogehoge;
mysql> show tables;
mysql> truncate table hoges;

RDSからEC2のMySQLにインポートする

$ sudo mysqldump -u <RDS_user_name> -p<RDS_password> --port=3306 --host=hostname --single-transaction --compress --order-by-primary -v --databases hogehoge  | mysql -u <local_user> -p<local_password>

ローカルのMySQLからAmazonRDSに移管する

EC2を使っていて、EC2のサーバに直接MySQLのDBを入れている状態から、AmazonRDSに移管します。自動でバックアップとかしてくれるので便利だからです。

Amazon RDSのインスタンスを作成する

まず、RDSのインスタンスを作成します。https://aws.amazon.com/jp/rds/getting-started/インスタンスを作る時に、データベースのID、パスワード、データベース名等を登録しました。エンジンはAurora 5.6.10aというやつです。

Amazon Aurora は、MySQL と互換性のあるリレーショナルデータベースエンジンで、高性能の商業用データベースの可用性およびスピードと、オープンソースデータベースのコスト効率性および簡素性を併せ持っています。Amazon Aurora は、MySQL の 5 倍の性能を持ち、同様の機能や可用性を提供している商用データベースの 10 分の 1 の価格です。

RDSにも、セキュリティグループがあります。このセキュリティグループの設定を変更して、EC2からアクセスできるようにします。

EC2のMySQLのデータを取り出す

sudo mysqldump --databases <database_name> --single-transaction 
--order-by-primary -r backup.sql -u <local_user> -p

RDSにデータをインポートする

参考:MySQL DB または MariaDB DB から Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート

上記によると、下記コマンドで、取り出してインポートするが一緒にできるらしい。

sudo mysqldump -u <local_user> --databases world --single-transaction --compress --order-by-primary  -p<local_password> | mysql -u <RDS_user_name> --port=3306 --host=hostname -p<RDS_password>

できた。便利だ。

あとは、アプリケーションのデータベースの設定を変更すれば完了します。

mysqldump – 特定テーブルの構造のみダンプ

参考:4.9.7. mysqldump(テーブル構造とデータのダンプ)

mysqldump [OPTIONS] database [tables]

特定テーブルの構造のみダンプしたいんじゃ。

mysqldump -u root -p -d hoges > hoges.sql 

これでいいのじゃ。-dを使うと構造だけダンプしてくれるのじゃ。

復元は下記のようにする。

mysql -u root -p database < hoges.sql

mysql 大きいサイズのsqlを分割してインポートする

大きいsqlをインポートするのら、php.iniで最大サイズを変更すればできるといえばできる。ローカル環境とかなら。でもインポート中にエラーとかでると結局sql直したりしなきゃいけない。今回は100テーブルあって全部で30MBくらいのsqlなので、テーブル毎に分割してインポートする。

csplit dump.sql /DROP\ TABLE\ IF\ EXISTS/ -f db {*}

db00〜db99までのファイルができた。db00は最初の方のファイルの説明みたいな文章が入ってるだけなので、実際使うのはdb01〜db99までの99ファイル。99回インポートを手動するのはめんどくさい。。シェルスクリプトを作ってみる。

#!/bin/sh
i=1
pass='hogehoge'

while [ $i -ne 100 ]
do
    no=$i
    if test ${i} -lt 10 ; then
        no="0${i}"
    fi
    echo $no
    eval /Applications/XAMPP/xamppfiles/bin/mysql -u root -p$pass  hogedb < db$no
    i=`expr $i + 1`
done

これでできた。

EC2 phpmyadminが動かない

APCとmemcachedを入れたことが原因だった。

当初でていたエラーはこれ。

Undefined property: PMA_Error::$hash in /usr/share/phpMyAdmin/libraries/Error.class.php on l     ine 169

Notice:  Undefined property: PMA_Error::$isDisplayed in /usr/share/phpMyAdmin/libraries/Message.class     .php on line 724

Notice:  Undefined property: PMA_Error::$params in /usr/share/phpMyAdmin/libraries/Message.class.php      on line 538

Fatal error:  Class 'PMA_Message' not found in /usr/share/phpMyAdmin/libraries/Message.class.php on l     ine 649

これはセッションが変なときに出るやつらしい。PHPMyAdmin Error: Class ‘PMA_Message’ not foundここにエラーのことが書いてある。セッション書き込み権限がない的なことが書いてある。

通常、php.iniのsession.save_pathに設定されているディレクトリにsessionが書き込まれるので、そこの権限がapacheになってないといけない。chown root:apache ディレクトリ、chmod 660 ディレクトリみたいになっているか確認する必要がある。自分の場合はそうなっていたが、APCをインストールしたらこのエラーがでるらしい。下記によって、phpmyadmin内ではapcを無効にするとエラーがでなくなった。

vim /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>
   php_admin_value apc.enabled 0
</Directory>

参考:Running phpMyAdmin with APC cache enabled, fatal PHP errors

これで当初のエラーがなくなったが、下記のようなセッション関連のエラーが出続けてなんでかなと思ったら、memcachedを入れたときに、/etc/php.d/memcache.iniに、session.save_path=”tcp://localhost:11211″と書いていた。だから、php.iniのsession.save_pathは無効になってる状態だった。。

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

memcachedを使いつつ、phpmyadminを正常に動かす方法もあるのかもしれないけど、下記でmemcachedをphpmyadminだけで無効にする方法が書いてあった。

Phpmyadmin doesn’t work if session.save_handler set to memcache

You might have to change this lines in phpmyadmin folder ‘libraries/session.inc.php’:
Try include this line at the top of the file: ini_set(‘session.save_path’, “/tmp/”);
Uncomment this line (about 74): ini_set(‘session.save_handler’, ‘files’);

ソースコードいじるっていうのはかなり微妙だし、やってるのはini_setだけなので、/etc/httpd/conf.d/phpMyAdmin.confを下記のようにてみた。

<Directory /usr/share/phpMyAdmin/>
   php_admin_value apc.enabled 0
   php_value session.save_path /tmp/session
</Directory>

これでできた。長かった。。

ちなみに、config.inc.phpの場所は、色んなブログに、/usr/share/phpMyAdmin/config.inc.phpと書いてあったので、ないないと思ってたら、/etc/phpMyAdmin/config.inc.phpにあった。

AmazonLinuxで割と新しい版のphpmyadminをインストールするには、下記でやるとよかった。

yum install --enablerepo=remi,epel,ius phpMyAdmin

mysqlコマンド

$ mysql -p -u root
show databases;
create database hoge;
use hoge;
source import.sql;
show tables;
select name,value from hoges limit 10;
select * from hoges where name=’hoge’;
update hoges set value=’hogehoge’ where name=’hoge’;

show columns from hoges;
select * from hoges order by name desc limit 3;
select name,value from hoges where name in(‘hoge’,’hogeo’,’hogeko’);

//インポート
mysql -u root -p DB名 < dump.sql //エクスポート mysqldump -u root -p DB名 > dump.sql

//テーブル空にする
TRUNCATE TABLE table_name;

//ユーザーの作成
CREATE USER user IDENTIFIED BY ‘password’;