Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【PHP】mbstringモジュールで「髙橋」や「山﨑」の文字の日本語処理に失敗する

PHPで日本語処理を行う際に、髙橋さんの「髙」(はしごたか)や山﨑さんの「﨑」(たちさき)の漢字を処理しようとすると失敗することがある。失敗した場合、その文字は「?」と表示される。

PHPで日本語などのマルチバイト文字を処理するにはmbstringモジュールを使用することが多いが、この場合、文字エンコーディングをきちんと指定する必要がある。Windows 7(例えばマイクロソフトエクセルなど)で出力されたテキストファイルは、文字エンコーディングは通常Shift-JIS(シフトJIS)になるが、PHPで扱う場合は文字エンコーディングに「SJIS-win」を使用すること。

以下は、Windows 7上で作成されたテキストファイルのテキストを代入した変数($××)の中身をUTF-8に変換して他の変数($○○)に代入する例。

$○○ = mb_convert_encoding($××, "UTF-8", "SJIS-win");

【Apache】インストールする(Windows版)

2021年8月現在の最新版は2.4.48。

公式ページhttps://httpd.apache.orgを開いて、左側のメニュー「Essentials」の「Download!」(一番上にある)。

右側の「Apache HTTP Server 2.4.48~」の「Files for Microsoft Windows」をクリック。ぺーぎが切り替わる。「Downloading Apache for Windows」の「Apache Lounge」をクリックする。https://www.apachelounge.com/downloadに飛ぶ。

開かれたページのhttpd-2.4.48-win64-VS16.zipをダウンロードし、ディレクトリ付きで適当なフォルダーに展開する。

展開されたフォルダーApache24をC:\にそのまま移動させる。フォルダーと一緒に展開されたReadMe.txtはReadMe@.txtとしてC:\Apache24にコピーする。ファイル「-- Win64 VS16 --」は削除してよい。

管理者としてコマンドプロンプトを実行し、ウェブサーバソフトウェアを動作してみる。

>c:\Apache24\bin\httpd.exe
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message
(OS 10013)アクセス許可で禁じられた方法でソケットにアクセスしようとしました。  : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)アクセス許可で禁じられた方法でソケットにアクセスしようとしました。  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs

80ポートが使われているため、起動できないと言われる。80ポートを何が使っているか調べる。

>netstat -a -o | find ":80"
  TCP         0.0.0.0:80             ○○:0             LISTENING       4
(表示省略)
  TCP         [::]:80                ○○:0             LISTENING       4

プロセスIDが4(最後の数字)が80ポートを使用していることがわかる。タスクマネージャのタブ「詳細」でPIDが4を探すと、名前が「System」となっておりWindows自体が使用しているはず。これが何かを調べる。

この通信のために、ファイアウォールに通信許可がなされているはずである。そこで、「コントロールパネル」→「Windows Defender ファイアウォール」、左側のメニュー「詳細設定」。別ウィンドウが表示される。

左側のメニュー「受信の規則」をクリック。ローカルポートが80のものでかつ有効になっているものを探す。「BranchCache コンテンツ取得 (HTTP-受信)」が有効になっているはず。

「コントロールパネル」→「管理ツール」→「サービス」。別ウィンドウが表示される。「BranchCache」を探す。恐らく状態が「実行中」になっているはず。これを、右クリックで表示されるメニューの「停止」をクリック。なお、スタートアップの種類が「無効」になっていないと手動で起動できてしまうため、ダブルクリックをして表示されたダイアログで「無効」に変更して「OK」ボタンを押すこと。 再度試す。

>netstat -a -o | find ":80"
(表示省略)

前期のIDが4の2行が表示されなければよい。80ポートが使われなくなったため、Apacheを起動する。

>c:\Apache24\bin\httpd.exe
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using ::1. Set the 'ServerName' directive globally to suppress this message

サーバ名が指定されていないため起動できないと警告されている。C:\Apache24\conf\httpd.confをテキストエディターで開いて、「ServerName」を探す。おそらく以下のようにコメント化されているはずのため、以下のように127.0.0.1:80を指定する。

#ServerName www.example.com:80
↓
ServerName 127.0.0.1:80

Ctrl+Cでプログラムを強制終了し(数秒待たされる)、再度、起動する。

>c:\Apache24\bin\httpd.exe

この後に、何も表示されなければ起動されているはず。ウェブサイトを開く。

http://localhost

「It works!」と表示されれば成功。コマンドプロンプトで起動したこのプログラムはCtrl+Cで強制終了させる(数秒待たされる)。

Windowsのサービスとしてインストールする。

>c:\Apache24\bin\httpd.exe -k install

これで、Windows起動時に自動的に起動するようになる。

【PukiWiki】index.phpが自動で開くようにする

アドレスを指定したときに自動でindex.phpが開くように設定した際のメモ。例えば、http://localhostを開いた際にhttp://localhost/index.phpが自動的に読み込まれるようにするということ。

Apachehttpd.confの「<Directory "${SRVROOT}/htdocs">」の箇所を、以下のように修正

Options Indexes FollowSymLinks
↓
Options -Indexes
AllowOverride None
↓
AllowOverride All

PukiWikiをインストールしたディレクトリにある.htaccessの最後の行に以下の1行を追加。

DirectoryIndex index.php

Apacheを再起動する。http://localhostを開いて、自動でindex.php開かれれば成功。

f:id:munibus:20210806190229p:plain

【エコリカ ECI-E80L-6P】メッセージ「エプソン非純正品が検出されました。」

エプソンプリンターのインクカートリッジIC6CL80L互換である、エコリカのインクカートリッジ(この例ではECI-E80L-6P)をエプソンプリンターに装着し、パソコンからエプソンプリンターで印刷しようとすると、以下のメッセージが最初に表示される。

f:id:munibus:20210712223112p:plain

エプソン非純正品が検出されました。

純正品以外のものをご使用になりますと、プリンター本体や印刷品質に悪影響が出るなど、プリンター本来の性能を発揮できない場合があります。

エプソンは純正品以外の品質や信頼性について保証できません。

非純正品の使用に起因して生じた本体の損傷、故障については、保証期間内であっても有償修理となります。

迅速な修理等のサポートサービスに活用するため、非純正品を使用したことがプリンターに記録されます。非純正品のインク残量表示について保証できません。

現在装着しているインクカートリッジをそのまま使用しますか?

 

非純正品を使用したことが記録されるのは、未確認だがおそらく本当と思われる。また、有償修理にもなると思われる。

ただし、純正品も非純正品もいくつも使ってみたが、印刷品質は(インクジェットプリンタであれば)そこまで差は出ない。また、非純正品を使ったせいで物理的に故障をしたことはない。インク残量表示はほぼ正確に表示される。

ただし、利用は自己責任で。

【PukiWiki】エラーメッセージ「Fatal error: Uncaught Error: Call to undefined function mb_strrpos() in …」

PHPをインストール直後に初期のトップページであるhttp://localhost/index.phpブラウザーで開いた際に、以下のエラーメッセージが表示されることがある。

Fatal error: Uncaught Error: Call to undefined function mb_strrpos() in (以下、表示省略)

PHPの設定(phpinfo())を表示させて「mbstring」を検索する。以下のような表があれば有効になっているが、この表が無ければ無効になっている(以下はPHPバージョン7.4での例)。

f:id:munibus:20210703102237p:plain

無効になっている場合は、php.iniをテキストエディタで開いて確認する。インストール直後は以下の様に「extension=mbstring」がコメント化されているはず。;を削除してこの設定(mbstring)を有効にする。

;extension=mbstring
↓
extension=mbstring

Apacheを再起動して、再度ブラウザーhttp://localhost/index.phpを開く。以下のようなページが表示されれば成功。

f:id:munibus:20210703102241p:plain

 

【LhaForge】右クリックのメニューに「LhaForgeで圧縮」→「ZIPパスワード付き」を追加する

パスワード付きZIPファイルを作成するために必要なメニュー「LhaForgeで圧縮」→「ZIPパスワード付き」は、標準では表示されないので、LhaForge設定で別途設定する必要がある。

  1. 左側メニュー「右クリックメニュー」→右側の「カスタマイズ」ボタン
  2. 別のダイアログが表示される。右上の追加できるメニューの「ZIPパスワード付き」をクリックして、上部中央の「<<追加」ボタンをクリック。左上の「表示されるメニュー」に表示されるはず。
  3. 「OK」ボタンをクリック。
  4. 「LhaForge設定」のダイアログに戻るので、「OK」ボタンをクリック。これで、右クリックで「LhaForgeで圧縮」→「ZIPパスワード付き」が表示されるようになる。

【PHP】Windows 10にインストールする(Apache編)

以下はApacheがインストールされているWindows 10にPHPのバージョン7.4をインストールした例。なお、ApacheApache Lounge(http://apachelounge.com/)版の使用が公式ページで推奨されている。

公式ページ(https://www.php.net)からダウンロード(https://windows.php.net/download#php-7.4)する。ウィンドウズ版はZIPファイルをダウンロードすることになる。 ウィンドウズ用のPHPは、64ビット版か32ビット版か、ノンスレッドセーフ版かスレッドセーフ版か、合計4つの中から選ぶことになる。Apacheの場合は、通常は64ビット版のスレッドセーフ版(この例ではphp-7.4.20-Win32-vc15-x64.zip)でよい。

ダウンロードしたら、フォルダーC:\phpを作成する。このC:\phpphp-7.4.20-Win32-vc15-x64.zipをディレクトリ付きで展開する。

C:\phpにあるphp.ini-developmentをphp.iniにコピーして同ディレクトリに置く。

Apacheの設定ファイルC:\Apache24\conf\httpd.confの最終行に、以下の3行を追加する。

LoadModule php7_module "C:/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"

これでインストールと設定は完了。設定を有効にするため、Apacheを再起動する。管理者として実行したコマンドプロンプトで、以下のようにコマンドを実行する。

>C:\Apache24\bin\httpd.exe -k restart

PHPの動作実験を行う。C:\Apache24\htdocsにテキストファイルでphpinfo.phpを作成。中身は以下の3行とする。

<?php
phpinfo();
?>

ブラウザーで以下のアドレスを開く。

http://localhost/phpinfo.php

上部に以下の画像ファイルが表示されているページが開かれて、画像の下に、いろいろな設定内容が表示された表が表示されれば、動作実験は完了。PHPは正常に動作している。

【PHP】Windows 10に最新版をインストールする(Apache編)

2021年6月現在のPHPの最新バージョンは8.0.7。これをWindows+Apacheの環境にインストールする。なお、ApacheApache Lounge(http://apachelounge.com)版が公式ページで推奨されているので、それを使用すること。

まずPHPを公式ページ(https://www.php.net)からダウンロードする。ダウンロード先はここ。ウィンドウズ版はZIPファイルをダウンロードすることになるが、ここで64ビット版か32ビット版か、ノンスレッドセーフ版かスレッドセーフ版か、合計4つの中から選ぶことになる。通常は64ビット版のスレッドセーフ版(php-8.0.7-Win32-vs16-x64.zip)でよい。

ダウンロードしたら、フォルダーC:\phpを作成して、このC:\phpphp-8.0.7-Win32-vs16-x64.zipをディレクトリ付きで展開する。

C:\phpにあるphp.ini-developmentをphp.iniにコピーしてそのディレクトリに置く。

Apacheの設定ファイルC:\Apache24\conf\httpd.confの最終行に、以下の3行を追加する。

LoadModule php_module "C:/php/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"

PHPの公式ページの説明(https://www.php.net/manual/ja/install.windows.apache2.php)では、1行目が「LoadModule php8_module~」と書かれているが、これは誤りで、上記のようにすること。

これでインストールと設定は完了。設定を有効にするため、Apacheを再起動する。

>C:\Apache24\bin\httpd.exe -k restart

PHPの動作実験を行う。C:\Apache24\htdocsにテキストファイルでphpinfo.phpを作成。中身は以下の3行とする。

<?php
phpinfo();
?>

ブラウザーで以下のアドレスを開く。

http://localhost/phpinfo.php

ウィンドウの上部に、以下の画像ファイルが表示されて、その下に、いろいろな設定内容が表示された表が表示されれば、動作確認は完了。PHPは稼働している。

f:id:munibus:20210630000451p:plain