2014年版 さくらでpearインストール(go-pear.phar使用)

さくらインターネットでpearをインストールしたときの覚書。
go-pearを使ったが、ファイルが古いのか利用中のさくらサーバーではインストールできず。(途中で止まる)。

2014年4月現在、下記の方法でpearがインストールできる。

1.ターミナルでサーバーにインストールして、go-pear.pharをダウンロード。

------------------------------------
curl http://pear.php.net/go-pear.phar > go-pear.phar
------------------------------------

このとき、ダウンロード先はここにした。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/home/ユーザー名
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2.次のコマンドを実行してインストール開始。
------------------------------------
php go-pear.phar
------------------------------------

インストール先を「/home/ユーザー名/pear」にしたかったので、事前に「pear」フォルダを作っておいた。「/home/ユーザー名」にある「go-pear.phar」を実行すれば、希望のフォルダにインストールされた。

インストール途中でメッセージが出た。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Would you like to alter php.ini ? [Y/n] :
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
権限がなくて変更できないので「n」を選択。

以上でインストールは完了。

参考ページ: こちら

以下はおまけの覚書。

3.DB.phpが使いたかったので、コマンドを実行してインストール。

------------------------------------
pear install DB
------------------------------------

4.使いやすくするためにDB.phpのある場所にパスを通す。

php.iniに追記した内容
------------------------------------
/home/ユーザー名/pear/share/pear
------------------------------------

また、PHPファイルでデータベースを読み込んだときエラーが出たが、単にログインパスワードを間違えていただけだった・・・

ブラウザに出力されたエラー内容
------------------------------------
Warning: mysql_set_charset(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /home/ユーザー名/libs/function.php on line 220

Warning: mysql_set_charset(): A link to the server could not be established in /home/ユーザー名/libs/function.php on line 220
ConnectError!DB Error: connect failed
------------------------------------

XPmodeにてODBC用MySQL Connecterインストール時にエラーが出た

XPmodeにてデータ ソース (ODBC)用MySQL Connecterインストール時に次のようなエラーが出た。

---------------------------------------------------------------
Error 1918.Error installing ODBC driver MySQL ODBC 5.2 ANSI Driver,
---------------------------------------------------------------

mysql_con_error

解決方法

今回のエラーは、「Microsoft Visual C++ 2010 SP1 Redistributable Package」がインストールされていないと起こる。XPmodeもデフォルトでは入っていないので下記URLから「ダウンロード」 → 「インストール」する。

ダウンロード元URL
---------------------------------------------------------------

http://www.microsoft.com/en-us/download/details.aspx?id=8328

---------------------------------------------------------------

これで解決。

参考

XPmodeでLANやNASを使えるようにする

Windows7のXPmodeは、インストール直後の状態ではLANやNASにアクセスできない。アクセスするには、XPmodeの設定をいじる必要がある。

手順1

XPmodeをシャットダウンする。
Windows7の「スタート」→「すべてのプログラム」→「Windows Virtual PC」→「Windows Virtual PC」をクリックして、「コンピュータの状態」が「電源切断」になっていることを確認する。

手順2

手順1で開いたフォルダ内にある、Windows XP Mode.vmcx を右クリックして「設定を選択」。

出てきた設定項目の「ネットワーク」がデフォルトで「共有ネットワーク (NAT)」になっているはずなので、これを変更する。変更先は、ホストPCであるWindows7のデバイスマネージャーで選択されているのと同じLANアダプター。
自分の環境だと「Realtek PCIe GBE Family Controller」にだった。

これで、LANやNASにアクセスすることができる。

参考1  参考2

【mysql】ORDER BYの順番でレコードに連番を振る方法

ORDER BYの順番でレコードに連番を振るクエリは以下の通り。

-----------------------------------------------------
SET @i := 0;
UPDATE テーブル名 SET column2 = (@i := @i +1) ORDER BY column1 ASC;
-----------------------------------------------------
ORDER BY 以下の条件で、column2フィールドのレコードに連番を振られる。

他のPCからxamppをインストールしたPCのmysqlに接続する

他のPCからODBC接続でxamppをインストールしたPCのmysqlに接続を試みた際、Mysql Connecterのテスト接続でエラーが発生した。

エラー内容
----------------------------------------------------------------
Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
----------------------------------------------------------------

xamppの初期設定では、localhostからの接続だけが許可されているのでエラーになる。
他のPCから接続するには、接続の権限を持ったユーザー作る必要がある。

「mysql」という名前のデータベースに「user」という名前のテーブルがあるので、そこに新しいユーザーを加える。

書式
----------------------------------------------------------------
GRANT ALL PRIVILEGES ON 有効範囲(データベース名.テーブル名) TO ユーザー名@ホスト名 IDENTIFIED BY 'パスワード'
----------------------------------------------------------------
PRIVILEGES は、省略可。

実際のコマンド
----------------------------------------------------------------
GRANT ALL PRIVILEGES ON *.* TO testuser@'%' IDENTIFIED BY 'test'
----------------------------------------------------------------

GRANT構文については、こちら1こちら2

上のコマンドだと、以下の設定をしたことになる。
----------------------------
・ユーザー名:testuser
・パスワード:test
・ホスト名(@以降):ワイルドカード(%)← これでlocalhost以外からもアクセス可能になる。もし「localhost」と記述すれば、他のPCからはアクセスできない。
・all privileges は、「(GRANT権限以外の)すべての権限を与える」
・*.* は、「すべてのデータベースのすべてのテーブルに有効」という意味。
----------------------------

これでうまくいった。

他のPCからページが見れない場合は、こちら

参考ページ:こちら1こちら2

【xampp】LAN内の他のPCからページが見れない場合の対処法

新しいPCにxamppをインストールしたら、他のPCからページが見れなかった。
xamppをインストールしたlocalhostからなら問題なく閲覧できるが、LAN内の他のPCからIPアドレスを打っても、「見つかりません」的なタイムアウトで終わる。

【インストールした環境】
Windows7 64bit

1.問題の箇所がどこなのか探る

xamppのApacheの設定に問題があれば、Apacheのエラーログに何かしらの記述が残っているはず。
今回のケースでは、この段階ではエラーログなし。
xamppの設定以前に、ネットワークの問題である可能性が高い。

コントロールパネルから「Windowsファイアウォール」を開いてみると、「ホームネットワークまたは社内(プライベート)ネットワーク」が「未接続」になっている。

これを接続済みにするため、「コントロールパネル」→「ネットワークと共有センター」を開く。

「アクティブなネットワークの表示」を「パブリックネットワーク」から「ホームネットワーク」に切り替えた。(社内ネットワークでも可。パブリックネットワークだけが、セキュリティ上他のPCから閲覧できないようになっている)

再び、Windowsファイアウォールを開き、「ホームネットワークまたは社内(プライベート)ネットワーク」が「接続済み」となっていることを確認した。

また、「Windowsファイアウォール」→「Windowsファイアウォールを介したプログラムまたは機能を許可する」から「Apacheサーバー」の「プライベート」にチェックが入っていることも確認しておく。

2.XAMPPの設定を変更する

他のPCから改めてApacheサーバーにアクセス。
すると、公開フォルダは表示されるものの、XAMPPのトップページでは、ブラウザにエラーメッセージが表示された。

つまり
--------------------------------------------
○ 192.168.xxx.xxx/index.php ← 表示された
× 192.168.xxx.xxx/xampp/ ← エラーメッセージ
--------------------------------------------

エラーメッセージの内容
--------------------------------------------
アクセス禁止!

新しいXAMPPのセキュリティコンセプト:

は、要求のディレクトリへのアクセスは、ローカルネットワークから入手可能です。

この設定は、ファイル"で設定することができますのhttpd - xampp.conf " 。
--------------------------------------------

Apacheのエラーログはこれ
--------------------------------------------
[client 192.168.11.8:1253] AH01630: client denied by server configuration: C:/xampp/htdocs/xampp/
--------------------------------------------
192.168.11.8はアクセス元のIPアドレス。

エラーメッセージどおり、httpd - xampp.confを修正。
このとき、修正箇所はファイルの一番下の部分だった。

修正前
--------------------------------------------
#
# New XAMPP security concept
#

Require local
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

--------------------------------------------

↓↓↓

修正後
--------------------------------------------
#
# New XAMPP security concept
#

# Require local

Order deny,allow
Deny from all
Allow from 127.0.0.0/8
Allow from 192.168.11.0/24

ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

--------------------------------------------
青字が追記箇所。

参考ページ:こちら

Apacheを再起動したら、ちゃんと見れるようになった。
(逆に、http://localhostと指定した場合に「アクセス禁止」が出るようになった)

他のPCからmysqlにつながらない場合は、こちら

10進法のunicodeテーブル

unicode10進法は以下のとおり。
縦の数字と横の数字を足したものが、その文字のunicode番号となる。
(さらに…)

UWSCでunicode文字を順番に全部表示する

unicodeの文字を順番に表示させるには、番号を変えてchr関数を実行すればいい。
chr関数は、10進法のunicode番号を文字に変える。

unicode文字を順番に全部表示するサンプルコード
----------------------
for i = 1 to 65535

PRINT CHR(i)

next
----------------------

unicode10進法は以下のとおり。
縦の数字と横の数字を足したものが、その文字のunicode番号となる。

10進法のunicode

mecabで半角記号が名詞,サ変接続になるのを解決する

初期設定のmecabは半角記号がなぜか、名詞,サ変接続になる

-------------------------------
; 名詞,サ変接続,*,*,*,*,*
\ 名詞,サ変接続,*,*,*,*,*
-------------------------------

サ変接続の名詞とは、サ変動詞に繋げることができる名詞のこと。
後ろに「~される」「~した」「~する」「~せよ」などが続いても違和感の無い名詞。「後悔」する、「録画」した、「撮影」される、といった言葉。

記号は記号であって、サ変接続の名詞ではないので、これでは困る。

半角記号を「記号」と認識してしまうのは、半角記号がmecabにとって未定義の文字(未知語)で、未知語の記号を「名詞,サ変接続」に分類するように未知語用のファイルに定義されているからである。

なので、未知語用のファイルをいじれば、問題は解決する。

解決方法

1.未知語用のファイルを開く

ファイル名は、unk.def。
(unk は unknown の略。拡張子「.def」は定義ファイル。(Define))

ここにあった。(インストール前の辞書ディレクトリ内)
--------------------------------------------
/home/username/local/mecab-ipadic-2.7.0-20070801
--------------------------------------------

開くと、こんな感じで未知語の処理方法が書いてある。
--------------------------------------------
KANJI,1292,1292,12649,名詞,固有名詞,組織,*,*,*,*
KANJI,1289,1289,17340,名詞,固有名詞,人名,一般,*,*,*
KANJI,1288,1288,15295,名詞,固有名詞,一般,*,*,*,*
SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
NUMERIC,1295,1295,27386,名詞,数,*,*,*,*,*
ALPHA,1285,1285,13398,名詞,一般,*,*,*,*,*
ALPHA,1293,1293,18706,名詞,固有名詞,地域,一般,*,*,*
ALPHA,1292,1292,13835,名詞,固有名詞,組織,*,*,*,*
--------------------------------------------

「SYMBOL」の部分を変更。

変更後
--------------------------------------------
SYMBOL,1283,1283,17585,記号,一般,*,*,*,*,*
--------------------------------------------

2.辞書を再インストール

辞書を作り直す。

mecab-dict-indexを実行して再作成。
--------------------------------------------
/home/username/local/libexec/mecab/mecab-dict-index
--------------------------------------------

辞書再作成の詳細はこちらの真ん中より下らへんを参照。

参考ページ
こちら1  こちら2

さくら共有サーバーでImportError: No module named MySQLdbが出る

さくら共有サーバーに「MySQL for Python」をインストールしたときに、ImportErrorが出た。解決方法の覚書。

【環境と前提】
---------------------------------
・さくらスタンダードプラン
・/home/workroom/local以下に自前の python2.7 がインストール済み。(さくら標準のpythonとは別で)
・/home/workroom/local以下に MySQL for Python がインストール済み。
---------------------------------

import MySQLdb を行うとエラーが出るのだが、理解に苦しんだのはエラー発生の条件が限定されているということ。

エラー内容
---------------------------
Traceback (most recent call last):
File "python_test4.cgi", line 11, in
import MySQLdb
ImportError: No module named MySQLdb
---------------------------

エラーが出る、もしくは出ないのは次の場合。

エラーが出ない(問題なし)
---------------------------
1.自前のpythonにパスを通して、ターミナルで「import MySQLdb」したとき。

2.テキストファイルの先頭に「#!/usr/local/bin/python」と記述して、pythonスクリプトをアップロードして、さくら標準のpythonを使い、ブラウザで読み込んだとき。
---------------------------
この2つの場合は、問題なく動作する。

エラーが出る
---------------------------
1.テキストファイルの先頭に「#!/home/username/local/bin/python」と記述して、pythonスクリプトをアップロードして、自前のpythonを使い、ブラウザで読み込んだとき。
---------------------------
自前のpythonを使って、ブラウザでpythonスクリプトを読み込んだときだけエラーが発生する。

「.cshrc」に PYTHONPATH や LD_LIBRARY_PATH を設定しているのに、無い!といわれる。

いろいろ悩んだ結果、解決法。
pythonスクリプトの先頭の記述を変更した。

---------------------------
#!/home/username/local/bin/python
---------------------------

↓↓↓

---------------------------
#! /usr/bin/env -S LD_LIBRARY_PATH=/home/username/local/lib PYTHONPATH=/home/username/local/lib/python:/home/username/local/lib/python/site-packages:/home/username/local/MySQL-python-1.2.3:/home/username/local/lib /home/username/local/bin/python
---------------------------

ようは、「.cshrc」に記述してあったpython関係のパスの記述を、全部テキストファイルの先頭にもコピーした。

これで動いた。自前のpythonをテキストファイルの記述で動かすと、「.cshrc」に書いてあるパスは無視されるって事かな?

参考:こちら