echo date('Y-m-s', strtotime($datetime));
2014年4月29日火曜日
MySQLのDATETIMEをPHPのtimestampに変換する。
MySQLから取得したDATETIMEは、"YYYY-MM-DD HH:MM:SS"という形式の文字列なので、strtotime()を使ってUnixタイムスタンプに変換する。
PHPとMySQLで文字化ける。
ローカル開発環境でPHPからMySQLのデータを取り出して表示させたら、日本語が文字化けしていた。
よくある事ですね。
やれやれ、文字コードの設定をせねばならぬ。
後々、さくらのレンタルサーバーにアップするつもりなので、そちらの文字コードに合わせようかと思う。
さくらのレンタルサーバーの仕様
http://support.sakura.ad.jp/manual/rs/tech_server.html
これによるとPHPもMySQLもEUC-JP(ujis)がデフォルトのようです。
よし、じゃあやるか。まずはMySQLから。
my.cnfの置き場所を調べる。
/etc/my.cnfが存在しなかったので、下記の場所からコピーして編集。
設定が反映されているか調べる
character_set_system以外はujisになっていますね!
character_set_systemはutf8のままでいいらしい。
次はPHPの文字コードを設定する。
こちらはMySQL接続後に下記のコードを入れるだけ。
私はこれで止めました。(文字化けを)
よくある事ですね。
やれやれ、文字コードの設定をせねばならぬ。
後々、さくらのレンタルサーバーにアップするつもりなので、そちらの文字コードに合わせようかと思う。
さくらのレンタルサーバーの仕様
http://support.sakura.ad.jp/manual/rs/tech_server.html
これによるとPHPもMySQLもEUC-JP(ujis)がデフォルトのようです。
よし、じゃあやるか。まずはMySQLから。
my.cnfの置き場所を調べる。
$ /usr/local/mysql/bin/mysql --helphelpの中ほどくらいに、下記の記述が見つかる。
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnfつまりこの4つのどこかにあればいいらしい。上から順に読み込まれるみたい。
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf今回は/etc/my.cnfに置く事にした。
/etc/my.cnfが存在しなかったので、下記の場所からコピーして編集。
$ sudo cp /usr/local/mysql/my.cnf /etc/ $ sudo vi /etc/my.cnf[mysqld]の下に追加。
# MySQLサーバーの文字コードをEUC-JP(ujis)に設定 character-set-server = ujis # クライアント側の文字コードが設定されていない場合はサーバー側の文字コードを使用 skip-character-set-client-handshakeMySQLを再起動。
設定が反映されているか調べる
$ /usr/local/mysql/bin/mysql -u root -p mysql> show variables like 'char%';結果
character_set_system以外はujisになっていますね!
character_set_systemはutf8のままでいいらしい。
次はPHPの文字コードを設定する。
こちらはMySQL接続後に下記のコードを入れるだけ。
mysqli_set_charset($db, "ujis");あとはデータベースのテーブルを作り直したりするなりPHPのソースコードをEUC-JPで保存するなりなんなり。
私はこれで止めました。(文字化けを)
2014年4月27日日曜日
JenkinsでFTPサーバーにデプロイする。
Publish Over FTP Pluginを入れる。
Jenkinsを再起動するとプラグインが有効になる。
[Jenkinsの管理]→[システム設定]に[Publish over FTP]の項目が追加されている。
[追加]ボタンを押して、FTPサーバーの設定を入力する。
ジョブの設定から、[ビルド手順の追加]に[Send files over FTP]が追加されているので選択。
必要な設定を記入したらOK.
ちなみにワークスペースをベースディレクトリとしているので、ディレクトリの設定はそこで行う。
[プロジェクトの高度なオプション]→[カスタムワークスペースを使用]で設定出来る。
Jenkinsを再起動するとプラグインが有効になる。
[Jenkinsの管理]→[システム設定]に[Publish over FTP]の項目が追加されている。
[追加]ボタンを押して、FTPサーバーの設定を入力する。
ジョブの設定から、[ビルド手順の追加]に[Send files over FTP]が追加されているので選択。
必要な設定を記入したらOK.
ちなみにワークスペースをベースディレクトリとしているので、ディレクトリの設定はそこで行う。
[プロジェクトの高度なオプション]→[カスタムワークスペースを使用]で設定出来る。
僕のMacにphpMyAdminを導入する。
phpMyAdminのサイトからダウンロードする。
http://www.phpmyadmin.net/home_page/index.php
phpMyAdmin-4.1.14-all-languages.zipを解凍。
出来たフォルダを好きなところに置く。
あとはApacheの設定でそこにアクセス出来るようにすればインストール完了。
(参照:Web開発用にApacheの設定を変更する。)
ブラウザからphpMyAdminのindex.phpにアクセスする。
以下のようなログイン画面が見えていればOK.
次にphpMyAdminの設定を行う。
phpMyAdminのフォルダにconfig.sample.inc.phpがあるので、それをコピーしてconfig.inc.phpに名前を変更する。
config.inc.phpをエディタで開いて編集する。
今回編集したのは以下の項目。
設定したあとはApacheを再起動させる。
そしてサイドphpMyAdminのindex.phpにアクセスし、"root"でログインする。
これでもう使えるようになるよ!
http://www.phpmyadmin.net/home_page/index.php
phpMyAdmin-4.1.14-all-languages.zipを解凍。
出来たフォルダを好きなところに置く。
あとはApacheの設定でそこにアクセス出来るようにすればインストール完了。
(参照:Web開発用にApacheの設定を変更する。)
ブラウザからphpMyAdminのindex.phpにアクセスする。
以下のようなログイン画面が見えていればOK.
次にphpMyAdminの設定を行う。
phpMyAdminのフォルダにconfig.sample.inc.phpがあるので、それをコピーしてconfig.inc.phpに名前を変更する。
config.inc.phpをエディタで開いて編集する。
今回編集したのは以下の項目。
// ホスト名を一応バーチャルホストのに変えた $cfg['Servers'][$i]['host'] = 'phpmyadmin.localhost'; // ローカルなので、パスワード入力無し $cfg['Servers'][$i]['AllowNoPassword'] = true;これでよし。
設定したあとはApacheを再起動させる。
そしてサイドphpMyAdminのindex.phpにアクセスし、"root"でログインする。
これでもう使えるようになるよ!
2014年4月26日土曜日
"icons"の罠。
ローカルでWeb開発をしていたらですね、"icons"ディレクトリを作ってそこにアクセスしようとしたら、違う場所をアクセスするんですよ。
なんでかなーと思って調べてみました。
結論から言えば、同名のディレクトリが存在していたからでした。
/etc/apache2/httpd.confを見ると、ルートディレクトリは"/usr"を指している。
こちらとしては、/etc/apache2/extra/httpd-vhosts.confで設定したルートディレクトリを使ってほしかったのだけど。
httpd.confのルートディレクトリの設定が生きたままだったのかー。
ディレクトリ名が衝突してしまったみたいですね。
とりあえず手っ取り早く解決したかったので、"icons"と名付けたディレクトリを別名に変えました。
なんでかなーと思って調べてみました。
結論から言えば、同名のディレクトリが存在していたからでした。
/etc/apache2/httpd.confを見ると、ルートディレクトリは"/usr"を指している。
ServerRoot "/usr"/usr以下のディレクトリを調べてみる。
$ ls /usr $ ls /usr/share $ ls /usr/share/httpd icons"icons"ディレクトリあるやん!めっちゃあるやん!
こちらとしては、/etc/apache2/extra/httpd-vhosts.confで設定したルートディレクトリを使ってほしかったのだけど。
httpd.confのルートディレクトリの設定が生きたままだったのかー。
ディレクトリ名が衝突してしまったみたいですね。
とりあえず手っ取り早く解決したかったので、"icons"と名付けたディレクトリを別名に変えました。
PHPでディレクトリ内のファイル一覧を取得する。
PHP5.3.0以降ならSPL(Standard PHP Library)ってのが使えるらしい。
というわけで、この方法でファイル一覧を取得出来る。
というわけで、この方法でファイル一覧を取得出来る。
$dir = 'directory';
$itr = new RecursiveDirectoryIterator($dir);
$itr = new RecursiveIteratorIterator($itr);
foreach($itr as $fileinfo) {
// 詳しくはSplFileInfoオブジェクトを参照
if($fileinfo->isFile()) {
$name = $fileinfo->getPathname();
...
}
}
Web開発用にApacheの設定を変更する。
Apacheの設定を変更する。
次にバーチャルホストの設定を行う。
DocumentRootやServerNameは自由に設定してください。
ドメイン名を/etc/hostsに追加する。
フォルダを作成して、パーミッションを変更する。
Apacheを再起動する。
" (13)Permission denied: access to * denied"が出る場合は作成したフォルダの大本のパーミッションが原因だったりするので、大本の方にも"chmod +x"をすれば解決する。
また、"httpd-vhosts.conf"に"~/"は指定出来ないので、ちゃんと"/Users/username/"を指定する必要がある。
$ sudo vi /etc/apache2/httpd.conf
バーチャルホストの設定を読み込むようにする。
# Virtual hosts - #Include /private/etc/apache2/extra/httpd-vhosts.conf + Include /private/etc/apache2/extra/httpd-vhosts.conf
次にバーチャルホストの設定を行う。
$ sudo vi /etc/apache2/extra/httpd-vhosts.conf下記の設定を追加する。
DocumentRootやServerNameは自由に設定してください。
<VirtualHost *:80>
DocumentRoot "/Users/username/sandbox"
ServerName sandbox.localhost
ErrorLog "/private/var/log/apache2/sandbox.localhost-error_log"
CustomLog "/private/var/log/apache2/sandbox.localhost-access_log" common
DirectoryIndex index.php index.html
<Directory "/Users/username/sandbox">
Options Includes ExecCGI FollowSymLinks
AllowOverride All
Order deny,allow
Allow from All
</Directory>
</VirtualHost>
ドメイン名を/etc/hostsに追加する。
$ sudo vi /etc/hosts"127.0.0.1 sandbox.localhost"を追記する。
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost 127.0.0.1 sandbox.localhost
フォルダを作成して、パーミッションを変更する。
$ chmod +x ~/sandbox
Apacheを再起動する。
$sudo apachectl restartアクセスに失敗する場合、error_logを見ると原因が分かる。
" (13)Permission denied: access to * denied"が出る場合は作成したフォルダの大本のパーミッションが原因だったりするので、大本の方にも"chmod +x"をすれば解決する。
また、"httpd-vhosts.conf"に"~/"は指定出来ないので、ちゃんと"/Users/username/"を指定する必要がある。
登録:
投稿
(
Atom
)






