2017年10月25日水曜日

mysql timestamp型<=>datetime型に変換

datetime型をtimestampに変換

select unix_timestamp('2017-10-24 09:31:42');
-> 1508805102

 timestampをdatetime型に変換

select from_unixtime(1508805102);
-> 2017-10-24 09:31:42

select from_unixtime(1508805102, '%Y/%m/%d %H:%i:%s');
->  2017/10/24 09:31:42

2017年10月20日金曜日

さくらインターネットで複数のバージョンのPHPを使う。PART2

以前「さくらインターネットで複数のバージョンのPHPを使う。」という記事を書いたが
標準が5.6になったでも7.1を使ってみたいよね。
PHPのバージョン選択を7.1にして動かない物だけ5.6を使うようにする。

コマンドラインでの作業になりますので十分注意をすること。 sshで自分のサーバーにログインします。 windowsならputtyとかPoderosaとか、 Macならcodaとかターミナルから ssh <自分のアカウント>@<自分のアカウント>.sakura.ne.jp と打ち込めばログインできます。
1
2
3
4
5
6
7
8
9
10
11
% ls -l /usr/local/php/
total
drwxr-xr-x  7 root  wheel  512 Sep 19 15:54 4.4
drwxr-xr-x  7 root  wheel  512 Sep 19 15:54 5.2
drwxr-xr-x  7 root  wheel  512 Sep 19 15:54 5.3
drwxr-xr-x  7 root  wheel  512 Sep 19 15:54 5.4
drwxr-xr-x  7 root  wheel  512 Sep 19 15:54 5.6
drwxr-xr-x  8 root  wheel  512 Sep 19 15:54 7.1
lrwxr-xr-x  1 root  wheel    3 Sep 19 15:54 cpanel -> 5.2
lrwxr-xr-x  1 root  wheel    3 Sep 19 15:54 default -> 5.6
drwxr-xr-x  7 root  www    512 Sep 19 15:54 modules

それぞれのディレクトリ下にbinディレクトリがありその下の目的のものがある。
1
2
3
4
5
6
7
8
9
10
11
% ls -l /usr/local/php/5.6/bin 
total
-rwxr-xr-x  1 root  wheel       857 Sep 19 15:54 pear
-rwxr-xr-x  1 root  wheel       878 Sep 19 15:54 peardev
-rwxr-xr-x  1 root  wheel       794 Sep 19 15:54 pecl
lrwxr-xr-x  1 root  wheel         9 Sep 19 15:54 phar -> phar.phar
-rwxr-xr-x  1 root  wheel     14837 Sep 19 15:54 phar.phar
-rwxr-xr-x  1 root  wheel  33860308 Sep 19 15:54 php
-rwxr-xr-x  1 root  wheel  33788156 Sep 19 15:54 php-cgi
-rwxr-xr-x  1 root  wheel      3264 Sep 19 15:54 php-config
-rwxr-xr-x  1 root  wheel      4550 Sep 19 15:54 phpize

このなかでファイルサイズの小さい物はリンクなので
大きいものを探す。どうやら本体はphp-cgiのようだ
これをwww/cgi-binにコピーする。

wwwに移動
ディレクトリcgi-binを作る
cgi-binに移動
先ほどlsで確かめたファイルをコピーする
1
% cp /usr/local/php/5.6/bin/php-cgi php56.cgi

コピーしたてはパーミッションが644になるので755に変更する必要がある
5.2なら/usr/local/5.2/bin/php-cgi

webサイトのrootの.htaccessに
1
2
Action php56-script /cgi-bin/php56.cgi
AddHandler php56-script .php

の2行を追加する。

.htaccessが無ければ作って保存する。

OSのバージョンが変わったらphp52.cgiを作り直す
そうしないと「Internal Server Error」が出ます。
AddHandler php52-script .php .html
とすると、拡張子が.htmlのままPHPのスクリプトを実行させる時にも使えます。

マルチドメインの場合はフォルダーの下にcgi-binを作り
同じようにコピーして.htaccessを置きます。

2017年9月29日金曜日

cahephp2 FormHelperの日時オプション 最大値、最小値、降順、昇順の設定

【FormHelper】
date(), datetime(), year(), input(typeがdate, datetime)
日時オプション
    $options['minYear'], $options['maxYear'] date/datetime と組み合わせて 使います。年の select フィールドで表示される値の最小値および/または 最大値を定義します。

    $options['orderYear'] date/datetime と組み合わせて、年の値を表示する 順序を定義します。有効な値は ‘asc’, ‘desc’ で、デフォルトは ‘desc’ です。

cakephp2のliタグで囲まれたlinkメソッドをtagメソッドに書き替える

1
<li><?php echo $this->Html->link(__('users'), ['controller' => 'users', 'action' => 'index']); ?></li>
1
echo $this->Html->tag('li', $this->Html->link(__('users'), ['controller' => 'users', 'action' => 'index']), array('escape' => false));
①を②に変換 [Find]
1
(<li><\?php )(echo )(\$this->Html->link\([^;]+)(;)( \?></li>)
[Replace]
1
\2$this->Html->tag('li',\3, array('escape' => false))\4

2017年6月22日木曜日

[cakephp 2.x]スタイルシートをViewに置く方法

Config/routers.phpに次の1行を加える
1
Router::connect("/css/*", array( "controller" => "css", "action" => "index" ));
コントローラーを追加する Controller/CssController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
App::uses('AppController', 'Controller');
class CssController extends AppController{
 public function index(){
 
  $this->layout = false;
  $this->response->type( "text/css" );
  // ビューファイルから@charsetを省略する場合
  // echo "@charset \"UTF-8\"; " . PHP_EOL;
 
  $path = func_get_args();
  $fileName = implode('/', $path);
 
  $this->render( $fileName );
 }
}
ビューファイルはView/Css/css以下に置く View/Css/css/svg/background.ctp
1
2
3
4
5
6
7
8
9
@charset "UTF-8";
/* =====================================
  SVG背景画像
===================================== */
/*  ボタン
================================ */
.btn--search:before {
  background-image: url("<?php echo $this->Html->url('/img/icn-search.svg'); ?>");
}
cakephpをサブディレクトリcakephpにインストールした場合以下のようにみえる。 //example.com/cakephp/css/svg/background.css
1
2
3
4
5
6
7
8
9
@charset "UTF-8";
/* =====================================
  SVG背景画像
===================================== */
/*  ボタン
================================ */
.btn--search:before {
  background-image: url("/cakephp/img/icn-search.svg");
}

2017年4月27日木曜日

サーバーのタイムゾーンが日本じゃないとき日本時間を表示する

サーバーのタイムゾーンが日本じゃないとき日本時間を表示する
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * tokyoDate method
 *
 * @param string $format
 * @param int $utc // timestamp
 * @return string
 */
function tokyoDate($format, $utc) {
 $time = new DateTime();
 $time->setTimestamp($utc)->setTimezone(new DateTimeZone('Asia/Tokyo'));
 return $time->format($format);
}