WebView2で「Microsoft Edge で、データ ディレクトリに対する読み取りと書き込みができません」と出る

Edgeのユーザーデータフォルダーにアクセスできないとき出る。

標準だとユーザーデータフォルダーは<ブログラム名>.exe.WebView2/EBWebView/
になる。

CoreWebView2Environment()の第2引数でフォルダ指定できるので、別のところにしてみよう

しかしExcelからDLL経由で呼び出すとこの指定が無視される。
環境変数WEBVIEW2_USER_DATA_FOLDERを指定してもダメ。
まいったな。

MFCでやるなら

CreateCoreWebView2Environment()は厳禁。
CreateCoreWebView2EnvironmentWithOptionsでデータ ディレクトリ指定しないとNG

    // データ ディレクトリはドキュメントに固定する 
    CStringA strA;
    CStringW strW;
    char lpszPath[MAX_PATH] = "";
    LPITEMIDLIST pidl;
    if (::SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == NOERROR)
    {
        ::SHGetPathFromIDList(pidl, lpszPath);
        ::CoTaskMemFree(pidl);
    }
    strA = lpszPath;
    strW = strA;

    HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(nullptr, strW.GetBuffer(0), nullptr,
        Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
            this,
            &CWebBrowserEdge::OnCreateEnvironmentCompleted).Get()

PHPバージョンアップで文字化けした時の対処方法

デフォルトcharset(default_charset)がUTF-8に変わったのが原因の可能性大。


iframeで読み込んでる先が文字コード違うと対策がキツイ。
ページ数が少ないなら文字コードをコツコツ変換するほうが早いかもね。

PHP7.x以降なら
.user.ini作って

  default_charset=none

を保存しとくと治ることもある。

PHPを7.2にバージョンアップしたら正規表現でマッチしない現象が出た

正規表現のマッチパターンの文字が大きいとエラーになるようになってる。

pcre.jit=0をphp.iniに設定すれば解消される

メールアドレスのチェックで使っている場合、昔の携帯アドレスとか無視して良い環境なら
filter_var()で代用したほうがよいですよ。

<?php

// バリデーションに使うメールアドレス
$email = 'hogehoge@email.com';

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "正しい形式のメールアドレスです。";
} else {
echo "不正な形式のメールアドレスです。";
}

PHP file_get_contentsで、リモートホストから取得出来ない場合の代替関数サンプル

ネタ元

file_get_contents()が
使えないサーバーがあるんですよー

function curl_get_contents($url){
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$response = curl_exec($ch);
	curl_close($ch);
	return $response;
}

perl/cgi jcode.plが見つからない。Jcode.pmでカバーする

jcode.plが見つからなかったので派生版であるJcode.pmで乗り切った。

http://openlab.ring.gr.jp/Jcode/index-j.html

でもPerl 5.8.0よりEncodeとして標準装備されたそうなので、古いコードを動かさなきゃいけないという理由でもなければEncode使いましょう

http://openlab.ring.gr.jp/Jcode/index-j.html

WADAXへの引っ越しでCGI動かなくて困ったときに調べた情報

cgi-binフォルダ以外で動かすには.htaccessを置いて以下のように記述

# CGI を使えるようにする。
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pm

.htaccessのパーミッションは606
cgiファイルのパーミッションは701か705
cgiあるフォルダも701か705じゃないとダメらしい。

サーバーの違いでインストールされてるライブラリがたりないということもある

今回、Jcodeがなかったので以下からとってきて入れたら動いた
http://openlab.ring.gr.jp/Jcode/index-j.html

動かない、謎!と思ったら、
cgiコードをエラーがでなくなるまでどんどんコメントアウトしてどこが原因か当てをつけてから工夫しましょう。

ちなみにcgiのフルパスが欲しいときは以下のコードで実行

print "Content-type: text/html \n\n";
use Cwd;
my $cwd = Cwd::getcwd();
print $cwd;

楽天ひかりへの切り替え設定(PR-500MI)

我が家は標準タイプホームゲートウェイ/ひかり電話ルータ (PR-500MI)なのでその設定方法。

・PCとPR-500MIをLANで直つなぎしてhttp://192.168.1.1へアクセス
・ログインする
・基本設定>接続先設定(IPv4 PPPoE)を選択
・一番上のメインセッションのとこの「編集」をクリック
f:id:shikaku:20210301175741p:plain
・楽天から届いてる書類のIPv4(PPPoE)インターネット接続情報をそのまま打ち込む
f:id:shikaku:20210301180133p:plain
・下の「設定」ボタンをクリックして完了