Latest Publications

Unable to load dynamic library ‘mcrypt.so’

PHPをアップグレードしたら、表題のエラーが出るようになった。

mcryptはphp7.2から削除されたとのこと。
エラーを出さないようにするにどうしたらいいかと色々やって、

/etc/php.d/mcrypt.iniをリネームしたら消えた。

Androidのエラー ”http://connectivitycheck.gstatic.com/generate_204″

サブ機のAndroidがある日から
“http://connectivitycheck.gstatic.com/generate_204”
にアクセスできません。

というようなエラーを出すようになった。
どんなアプリを使っていても強制的にこのエラー画面が出てくるので困る。

調べてみると、AndroidはこのURLに定期的にチェックをしに行き、
ネットに接続可能かを確かめるとのこと。
ただ、こんなエラーが出るものの他アプリではちゃんとネットにつながっている。

しばらく原因が不明だったが、一度だけエラー画面と同時に
一瞬、タイ語の画面が出た。

そのAndroidは日本ではSIMは運用していないが、
タイに旅行に行った際に買ったローミング用のSIMを2枚入れていた。
SIMは挿してはいるが使っておらず、次にどこか海外に旅行に行く時に設定するため挿したままにしていた。

もしやと思い、設定でSIMを無効にしたらエラーが出なくなった。
SIMを有効にしていると、WiFiにつながっていてもたまにSIMのデータ通信経由でチェックに行くのかもしれない。

Google広告で不承認: 機能していないリンク先

Google広告で、URLは絶対にあってるのに
「不承認: 機能していないリンク先」と出て、原因は500エラーとなる。

旧Search Consoleの「Fetch as Google」でチェックしても表示されてるし
描画もちゃんとされている。

「robots.txt テスター」でチェックしても対象になってる。

色々と調べて、新Search ConsoleのURL検査のライブテストをやったら
ここで500エラーの表示がついに出た。

現象さえ確認できれば後はチェックしていくだけで、
システムの色んなページで可能性のある部分を消しながらチェックしていき、
原因を追求。

今回の原因は
$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]
をそのまま使っていたことが原因で、ブラウザで見てもエラーにはならなかった。

isset($_SERVER[‘HTTP_ACCEPT_LANGUAGE’])をかますことで解決。

Laravelのtokenエラーになる

Laravelで、それまで問題なく動いていたものが
ある日、Tokenのエラーで動かなくなった。

全く同じソースでも別環境だと動き、その環境でだけ動かない。
試行錯誤の後、Vagrantで動かしていた環境を破棄して再構築したら動くようになった。

Apacheの設定が変わってしまった時のチェック箇所

macportsのアップグレードの影響だと思うが
localhostを開いたら

It works!

というApacheのデフォルトの表示が出て愕然。
設定をしばらく触っていなかったので、どこをいじればよいか探すのに苦労した。

ps -a | grep httpd

などで動いているhttpdを探し、

httpd -V

参照しているhttpd.confの箇所がわかるので
それを書き換えれば解決。

ちなみに
/opt/local/sbin/httpd
で動いてるconfファイルが
“etc/apache2/httpd.conf”
だった時のパスは
/opt/local/etc/apache2/httpd.conf
だった。

VirtualBoxでのWindows10のネット接続が不安定になる問題の解消

Mac上のVirtualBoxで動かしているwindowsを
10にアップグレードした後で、ブラウジングがかなり不安定になった。

BeingはつながるもののYahooはつながらず、
他のサイトもリロードを繰り返すと5回に1回つながるなど。

複数のブラウザで接続したところ
各サイトごとで同じ現象がでるのでブラウザの問題ではない。

事例を調べながらWindowsの設定をかなり変更したが解決せず。
(ネットワーク周りの設定をIP V4のみにするなど)

ネットで調べても同じような現象が起きている人も見当たらなかったので
Windows10が原因ではなく、VirtualBoxが原因かと思い
ネットワーク周りの設定を変えてみた。

具体的には、VirtualBoxのネットワーク項目で
割り当てが「NAT」になっていたのを「ブリッジアダプター」に変更すると
正常に動くようになった。

Apacheのチューニング箇所

忘れがちなのでメモ。

/etc/httpd/conf/httpd.conf

<IfModule prefork.c>
のあたり。

Google Spread Sheetをプログラムから操作

昔作ってたスプレッドシートからデータを取得するプログラムが動かなくなってた。
2015年5月に昔の認証方法が使えなくなり、
OAuth2.0だけになったとか。

指定方法を忘れていたのでメモ。

GoogleのAPI Managerで該当のOAuth 2.0 クライアント IDを探す
https://console.developers.google.com/apis/credentials

クライアントID名をクリックすると詳細が表示され、

サービス アカウント
{アカウント名}
{hogehoge}@developer.gserviceaccount.com

というメールアドレス形式の表示が出る。
このメールアドレスをコピーし、
取得したいスプレッドシートで「共有」ボタンからメールアドレスを追加。

これで、このクライアントの認証で
特定のスプレッドシートにアクセスが可能になる。

1つのIPのサーバーで複数のSSLを無料で設定してみた

通常は1つのIPではSSLがひとつとなるが、
それを解決するSNIという仕組みをやってみた。

Apacheが2.2.12以降などバージョン指定があるが
現状のものが対応してた。

ブラウザによって対応の可否があるので注意が必要。
幅広い利用者へのSSLが必要な場合は従来のものが良さそう。
今時のブラウザで使えれば良いのなら問題なし。

Apacheのconfファイルを書き直すだけでできた。
非SSLのVirtualHostの設定と似た感じで
SSLのVirtualHostの設定もできるようになる。

また、1つは従来の証明書を使っていたが
それ以外はLet’s Encryptという無料で使えるサーバー証明書にチャレンジ。

鍵マークなどは出なかったりするようだが
SSL通信はちゃんとできるとのこと。

下記を参考にさせてもらった。
Let’s Encrypt の使い方 – Let’s Encrypt 総合ポータル

ドメイン指定がされている公開サーバーなら使えて、
証明書は90日間ごとに更新が必要。
cronでも自動更新の設定ができそう。

サーバーへのインストール時に
pythonのエラーが出てかなり困った。

/usr/bin/python
は2.6.6だったのに
エラーはpython2.7.11に関してでる。

そのため、
mv /usr/bin/python2.7 python2.7_old
と一時的に外すと解決した。

これがうまく行けば証明書ファイルがサーバー内に保存されるので
confファイルでそれを指定すれば良い。
通常の証明書の取得作業よりだいぶ簡単。

(追記)
取得できるのは7日間で5証明書とのことで制限があるみたい。

どこでもMyMacでAirMac Time Capsuleにつながらない問題を解決

AirMac Time Capsuleに付けた外付けHDDを
外出先からも見れるようにしようとチャレンジした。

「簡単な設定ですぐつながるのですごい」と各所に書いてあったものが
どうやってもつながらず、半日チャレンジして諦める。
翌日再トライしてなんとか解決。

つながらなかった原因は
「IPv6の構成」を「リンクローカルのみ」にしていたことで、
これを「自動」に変えると外部からも接続できるようになった。

これは「自動」だと「IPv6リレーエラー」という警告が出ていたもので、
調べると「リンクローカルのみ」に変えると良いとあったので変更したところ
警告が消えたのでOKと思っていた。

これが原因とは考えなかったので他のところをずっと触っていた。

ダイナミックグローバルホストを登録してみたり、
DNSサーバーを登録してみたり
DHCPの範囲を変更してみたり、
光ルーターの設定を探してみたり。

結局、これを触らず初期設定に近い状態でやればすぐだったのに。
警告は出ているが、利用には問題なさそうなのでこのままにする。