さくらにて、同じサーバーで異なるドメインを運用中、片一方のドメインだけで文字化けが発生した。文字化け発生箇所は html_entity_decode を実行した直後。
原因はphpのバージョンの違いだった。
html_entity_decode のエンコードのデフォルト値はphpのバージョンで異なる。
PHP 5.6.0 以降では、デフォルト値として default_charset の値が使われる。PHP 5.4 と PHP 5.5 のデフォルト値は、 UTF-8 で、それより前のバージョンの PHP のデフォルト値は ISO-8859-1 である。
私のさくらサーバーはhtmlファイル内でphpを実行させるため、ルートファイルにphp.cgiをコピーしている。で、さくらのphpのバージョンはコピーしたphp.cgiで決まる。今回片一方のドメインのみで文字化けが起こったのはphp.cgiのバージョンが異なったためだった。
文字化けなしのphp.cgiをコピーして問題は解決した。なお、html_entity_decode では encoding というオプションの引数で文字コードを変えることが可能である。
UTF-8なら、
html_entity_decode($str,ENT_NOQUOTES,'UTF-8')
カテゴリー:さくらインターネット, 文字コード
文字参照をそのまま表示するには頭文字の「&」を文字参照に置き換える。
つまりダブルクォーテーションの文字参照「"」なら、「"」、
大なり記号の文字参照「<」なら、「&lt;」と記述すればいい。
カテゴリー:文字コード
カンマ区切りの文字列から上手にデータを抽出には「FIND_IN_SET」を使う。
たとえばあるカラムにカンマ区切りのデータが入っていたとする。
---------------------------------
はくさい,しいたけ,にんじん
---------------------------------
この場合こう書く。
SELECT * FROM table WHERE FIND_IN_SET('しいたけ', カラム名);
FIND_IN_SET は、結合条件(ON 句のうしろ)にも使える。
カテゴリー:mysql
テーブルのセル全体をリンクさせると次のようになる
↓ セル全体にすると ↓
方法はaタグをブロックレベル要素に変更して、高さと幅を100%にするだけ。
<a href="#" style="display:block;width:100%;height:100%;">
このとき親要素の td に高さ指定が必須なのだが、セルの情報量に合わせてセルサイズをブラウザに自動で決めてもらいたいのでセルサイズを指定したくない。必要以上大きくセルの高さをしていすると格好がわるい。
しかし、セルサイズを指定しないと display:block を指定してもセル全体がリンクになってくれない。仮に親要素 td に height:100% と指定してもセル全体のリンクにはならない。px指定でないとダメなよう。
そこで、テーブルの高さを文字の大きさ以下(情報量以下の大きさ)にする。
必要以上にテーブルの高さを広げずに、セル全体をリンクすることができる。
さて、自分の場合こうした上で文字をセルの垂直中央に揃えたかったのだが、うまくいかなかった。
セル1を垂直中央に置きたかったが、セルをブロックレベル化、 height を 100%にしたため vertical-align: middle も valign="middle" も思い通りに効いてくれない。
そこでdisplay:tableを使う。要素をtableのように横並びに配置させられるので思ったとおりのものができた。
コード
-----------------------------------------------------
<div style="display:table;table-layout:fixed;">
<div style="display:table-row;">
<a href="index.html" onclick="return false"style="display:table-cell;border: 1px solid #d4d4d4; width:200px;height:100%;vertical-align:middle;">セル1</a>
<a href="index.html" onclick="return false"style="display:table-cell;border: 1px solid #d4d4d4; width:200px;height:100%;vertical-align:middle;">セル2<br>セル2<br>セル2<br>セル2<br>セル2</a>
</div>
</div>
-----------------------------------------------------
カテゴリー:css
さくら共有サーバーのmysqlサーバーに突然アクセスできなくなったときの覚書。
サイトにアクセスしても突然つながらなくなった。
「Servece Temporarily Unavailable」と出る

ページを更新させると違うエラーが出る

どうもmysqlサーバーにつながってないよう。
phpmyadminへのログインを試みる。

ログインできない。エラー番号は1040。
SSHからmysqlサーバーにログインしてみる。

「Too many connections」のエラー。ようはmysqlサーバーへのアクセスが多すぎらしい。
これを解消するためにいろいろ試みた。

動作しているプロセスを終了してみるが、改善されず。
結局2時間後、つながるようになった。時間が解決してくれた。
カテゴリー:mysql, さくらインターネット
さくら共有サーバーで使えるmysqlコマンドの一覧は次のとおり。
mysqlモニターにログインしなくても(ログイン前に)つかえるもの。
MySQL5系 |
MySQL4系 |
mysql |
mysql-4.0 |
mysqldump |
mysqldump-4.0 |
mysqlimport |
mysqlimport-4.0 |
mysqlshow |
mysqlshow-4.0 |
mysql_config |
mysql_config-4.0 |
上記だけなので、mysqladminなどは使えない。
実行するとこうなる
------------------------------
mysqladmin: Command not found.
------------------------------
ソース
カテゴリー:mysql, SSH, さくらインターネット
my.cnfは、mysqlの設定ファイル。
SSHでサーバーにログイン(mysqlモニターにはログインしない)して、以下のコマンドを実行すれば確認できる。
「mysql --help」
もしくは、
「mysql --help | grep my.cnf」
helpに書かれている次のパスが、my.cnfのあるところ。

実際には「/usr/local/mysql/5.5/etc」にあった。
以下の記述があった。
-------------------------------
[mysql]
default-character-set=ujis
[mysqldump]
default-character-set=ujis
[mysqlimport]
default-character-set=ujis
[mysqlshow]
default-character-set=ujis
-------------------------------
これは、サーバーにログイン後(mysqlモニターにはログインしない)に使えるコマンド。
mysqladminなどはないので、実行しても使えない。
-------------------------------------------
mysqladmin -u username -h hostname -p
-------------------------------------------
↓ ↓ ↓
-------------------------------------------
mysqladmin: Command not found.
-------------------------------------------
カテゴリー:mysql, SSH, さくらインターネット
調べてみたら、white-space: nowrapは、IEとの相性が悪く、バグがよくあるらしい。
特定の条件で、nowrapの範囲が特定の要素や文字で始まったり終わったりすると問題が起きる。
自分の場合は、問題の文字で終わらないように、「 」を入れて対処した。
カテゴリー:css
Windows7の調子が悪いので、HDDの交換と再インストールを実施。その時のおぼえ書き。
今回は、再インストール前のWindowsの設定は引き継がない。重要データは外付けHDDに移動させて、まっさらな状態のWindowsをつくる。
1.
大事なデータを移動させたら、PCの電源を切ってコンセントを抜く。
放電時間として数分待ったら、HDDを新品と交換して、PCの電源をオン。
2.
UEFI(BIOS)が立ち上がるのを確認。
インストール用のWindowsディスクを読み込むために、外付けDVDを接続。
認識させるために電源ボタンを押して、再起動。認識できていること、起動順位が一番であることを確認したら、電源オフ。
インストール用のWindowsディスクを入れて、再起動。Windowsのインストールが始まる。
3.画面の指示に従ってユーザー名やシリアルコードを入力。途中で出てくるパスワードは空欄でもOK。Windowsのインストールを完了させる。
4.解像度の調整やLANポート利用のために、マザーボードのドライバをインストールする。付属のDVDを使用。
以上でWindows7の再インストール完了。
Windowsを再インストール後にすること
1.Windows Updateで最新の状態に更新
2.Microsoft Security Essentials をインストール。
3.IEのバージョンアップ。
4.電源管理の変更。(「コントロールパネル」-「電源オプション」-「プラン設定の編集」)
5.Google tool barをインストール。
6.IPアドレスを固定化する(「コントロールパネル」-「ネットワークと共有センター」-「アダプターの設定変更-」アイコンを右クリックして「プロパティ」-IPバージョン4を選択して「プロパティ」)
カテゴリー:Windowsトラブルシューティング
Windows7の再インストールをして、固定IPを設定するときに、あやまって使用済みのIPアドレスを設定してしまった。その後、IPアドレスを指定し直したが、「インターネットアクセス なし」の状態からなかなか苦労したので、その時のおぼえ書き。
そもそも、固定IPの設定方法
1.「コントロールパネル」-「ネットワークと共有センター」-「アダプターの設定の変更」
2.ローカルエリア接続のアイコンを右クリックでプロパティ
3.インターネットプロトコル バージョン4(TCP/IPv4)を選択して「プロパティ」
4.出てきたウインドウ内に希望のIPアドレスを入力する。
IPアドレスを設定しなおしたことで、LANアダプタにIPアドレスが二つ以上割り当てられていたら
「ipconfig/all」でこんな状態になっていたら

同じ物理アドレスに三つの異なるIPアドレスが設定されている。
固定IPアドレスは、いくつでも設定できてしまうので不要なIPアドレスは削除する。
削除するには、
1.「コントロールパネル」-「ネットワークと共有センター」-「アダプターの設定の変更」
2.ローカルエリア接続のアイコンを右クリックでプロパティ
3.インターネットプロトコル バージョン4(TCP/IPv4)を選択して「プロパティ」
4.プロパティを開いたら、「詳細設定」をクリック。出てきたウインドウの「IPアドレス」の場所に複数の固定IPが設定されているはずなので、不要なものを削除する。

IPアドレスを変更して再接続するには
IPアドレスの変更が思ったようにいかない場合は、IPアドレスを変更したり、無効と有効を繰り返すとうまくいく場合がある。
IPアドレスを一時的に変更する手段として、IPアドレスを固定から自動に変えるには「IPアドレスを自動的に取得する」と「次のIPアドレスを使う」を切り替えて「OK」する。

IPアドレスの無効と有効を切り替えるには、「インターネットプロトコル バージョン4(TCP/IPv4)」の前のチェックボックスをつけたりはずしたりする。

カテゴリー:Windowsトラブルシューティング, コマンドプロンプト