スマイルサーバで突然Perlが動かなくなった。

お客様のサイトの更新をしていたら、CGIが動作していないところを発見しました。
ログを見てるとどうも2018/10/30以降に動かなくなっているよう。
それまでは動いていたので、サーバ環境が変わったのかなと思いますが、パーミッションとか見直すけどわからない。

最終的に、
cgiエラー Premature end of script headers:
を参考に、

#!/usr/bin/perl
のあとに、「-」を付けることでなおりました。

#!/usr/bin/perl –

あと、wordpressのコンフィグファイルが、(スマイルサーバの意向による)サーバ移行前に戻っていたりして、なんだかよくわからない現象に……。スマイルサーバに何か起こったんだろうか?

WordPress5.0.2にバージョンアップしたらエディターのアイコンが消えた

ちょっとざくっとメモ程度に残しておきます。

WordPress5.0.2にしてバージョンアップしたら、ClassicEditorのアイコンが消えたのですが、ちょっと特殊な環境下で起こったんで、メモ。

競合したプラグインは、

・Types(Toolset)のバージョン2.3.1
・ClasscEditor
・YoastSEO

結局、一番害のない「YoastSEO」を無効化して一時的に対応しました。

Typesについては、2.3.1から管理画面からのUpdateが効かず、バージョン3とか有料化だとかよくわからない時期と重なったので、「有料にしないとバージョンアップできないんだな」と勝手に解釈してそのままにしていたのでそんなバージョンです。

ただ、試しにテスト環境でTypesをダメもとでインストールすると、2.3.5がインストールされ、そのバージョンだとこの3つの競合は起こらずだったの、Typesのバージョンによるようです。
(ちなみに、1.9.1という古い環境がローカルに残っていたのですが、それだと起こりませんでした)

あと、Wordpress5.0.2にすると、get_the_contentやget_the_idが、ループ外だと値が取得できなくなり、一部テーマを修正することに。page.phpだと、ループがなくても取れてたように思うんですが……。ただ、これも同じテーマでもとっておいたローカルのテスト環境で試すと、Wordpress5.0.2でも同じ現象は起こらず。ローカルと公開サーバの違いといったらPHPのバージョンとかなので、その辺も関係するかもですが、調査しきれていません。

まぁ、ループ内に書くのが正式だとは思うので、その辺はご注意です。

 

2019年の目標は、ブログ(サイト)の改善!

遅くなりましたが、明けましておめでとうございます 🙂

というような挨拶をこのブログに書くのも変な感じがします。備忘録として始めたこのブログ。
書き方も自由で、「後で見て分かったらいいか」という感じで作り始めて、早……何年でしょう。
古い記事が2008年ですが、このブログを始める前に、備忘録用にローカルに立てたサーバーに作ったブログで書いてた記事もあります。

「terastella.com」というドメインを取ったのが「2012-11-19」なので、そこを開始として考えたら6年目となりました。

記事は年に数回の更新でも、結構増えてきたし、自分の為に書いた記事でも、参考サイトとしてリンクを貼ってもらったりして、それなりにお役に立ててるところもあるようで大変嬉しいことです。

そんなブログですが、もう少し見やすくしたいとか、ちゃんと最近のブログっぽくしたいとか前から考えていたので、今年は、そのあたりに取り組みたいと思います!

広告とかアフェリエイトとか、ちょびっとだけさせていただいて、ちょっとお小遣いも稼げたら嬉しいなぁ……。
という目論見ももっております……。

1.ロゴを作る!(何事も形から……)
2.デザインを修正する!
3.記事をちゃんと書く!
4.アフェリエイトもちょっとしたい!

といったあたりを頑張っていこうと思います。

最終的にはアドワーズ広告を掲載したいです。
これまで2回ほど挑戦したんですけど、「オリジナルの記事がない」みたいな理由でリジェクトされました。

確かに引用もあるし、参考ページへのリンクなども貼ってますけど、まったくそんな記事ばかりではないんですが……。どうしてかな。

その辺もまた記事にしていければ……と思いつつ。

本年もよろしくお願いいたします。

zenlogic・サーバやドメイン契約の顛末について

私の勉強不足だったのかもで、もしかしたら、サーバーを取り扱っている方や、他のWEB関係の方の中では、常識の範囲で、こんなことにつまづいたのが恥ずかしいことなのかもしれませんが、なんかの役に立つのかもなので、残しておきます。

zenlogicのサーバを利用していました。
2018年夏の例の障害の件で被害を被りましたので、データだけ別サーバに移し、DNSの設定の変更等をしてドメインの管理だけ残しました(契約期間の関係でドメインはすぐに移せなかった)。
ドメインの管理だけ契約に残し、サーバの契約を切っても大丈夫かと問い合わせたら、大丈夫と返答がきたので、サーバの契約を切るお願いをしました。

そうすると、サーバ契約が切れたころに、サイトが見えなくなりました。
「IPが見つかりません」などというエラーが出ていました。

zenlogicに残していたドメイン契約を調べてみると、DNSゾーンのいろいろとしていた設定が、zenlogicへのネームサーバの設定だけになり、DNSゾーンの設定もできなくなっていました。

続きを読む

wordpressのマルチサイト参考記事

少し前に、Wordpressのマルチサイトを作っていて、参考にさせていただいた記事です。

WordPressマルチサイトで、複数の子サイトを1つのテーマで管理する方法
https://lovelog.eternal-tears.com/create-theme/advanced/mu-childtheme/

WordPressマルチサイトで他ブログの記事を表示する

WordPressマルチサイトで他ブログの記事を表示する

全ブログをサイト内検索の対象にする[マルチサイト,WordPress]

全ブログをサイト内検索の対象にする[マルチサイト,WordPress]

Search
Wordpressのマルチサイト全体で検索できるようにする
https://blog.kazu69.net/2013/07/28/allow-search-in-the-entire-wordpress-multisite/

googlemapで地図変更のたびに表示させるマーカーが消えてしまう

複数の地点情報があり、GoogleMapを表示したときに、そのGoogleMapの表示範囲のみの地点を取得して、マーカーを表示する。
というスクリプトを昔書いていて、うまく動いていたのですが、その地点が一瞬だけ表示して消えるという現象が起こるようになりました。
また、一旦ほぼ全地点を読み込んだあとだと表示されるという現象でもありました。

だいたい下記の流れで表示

・メイン地点を中心とした地図を表示
・メイン地点のマーカーを表示
・表示された地図の四方の緯度経度を取得
・その緯度経度の範囲内のマーカーの位置情報をxmlで取得
・xmlをajaxで読み込んでそのほかの地点として表示

地図を移動させたり拡大したりするたびに、表示された地図の四方の緯度経度を取得し……という流れを繰り返します。

表示範囲の地点を取得して、マーカーを表示させるイベントは下記のように書いていました。

google.maps.event.addListener(map, 'idle', function(){
     setPoints();
});

‘idle’という部分をいろいろと変えてみました。
最初は’bounds_changed’(地図のビューポート(見えている範囲)に変化があった時に発火)にしたのですが、なぜかこれだとマーカーが上書きされて、影がだんだん濃くなりました。
結局、’tilesloaded’(地図のタイルの読み込みが完了したタイミングで発火)を採用しました。

google.maps.event.addListener(map, 'tilesloaded', function(){
     setPoints();
});

仕様が変わったのか、ブラウザの解釈が変わったのか、そのあたりまでは調べていません。

上記について、参考にさせていただいたサイトは下記です。
https://lab.syncer.jp/Web/API/Google_Maps/JavaScript/Map/bounds_changed/
https://lab.syncer.jp/Web/API/Google_Maps/JavaScript/Map/tilesloaded/
どちらも「Syncer」というサイトです。ありがとうございました。

GMOマルチペイメントのトークン決済設定について

EC-CUBEで仕様しているGMOマルチペイメントのクレジットカード決済を、トークン方式の決済に変更。

トークン方式の契約をして、ここのチェックを変えたらいいんですよね?と念のために問い合わせたら「マニュアル見てください。皆さんそれで対応されてますので」ととっても無下にされたので、マニュアルを見たけど、トークン決済のところは「クレジットカード決済と同」という、意味のない記載だったので路頭に迷う。

多分、ああすればいいんだけど、確信が欲しい……。

と検索してたら、GMOの「よくある質問」に記載が。

EC-CUBE/トークン決済の利用設定方法を知りたい

上の記事もいつ消えるかわからないので、一部転載させていただきます。

以下、上記URLの記事より転載

2.12系、2.13系共通 —————————–

■事前に、支払方法設定の既存の設定をご確認ください。

EC-CUBE管理画面
->基本情報管理
->支払方法設定
->クレジットカード決済 -【編集】を押下
->ご設定内容をお控えください

1:モジュール設定の更新

EC-CUBE管理画面
->オーナーズストア
->モジュール管理
->【モジュール一覧を取得する】を押下
->決済モジュール – 【設定】を押下
->有効にする決済方法にて
【トークン方式クレジットカード決済】をチェック
決済用テンプレート初期化にて、
【決済用テンプレートを初期化する。】をチェック
->【この内容で登録する】を押下

2:支払方法設定

EC-CUBE管理画面
->基本情報管理
->支払方法設定
->トークン方式クレジットカード決済 -【編集】を押下
->事前に確認した支払方法設定の内容をご設定ください。
->【この内容で登録する】を押下

3:配送方法設定

EC-CUBE管理画面
->基本情報管理
->配送方法設定
->配送業者 – 【編集】を押下
->支払方法 – トークン方式クレジットカード決済をチェック
->【この内容で登録する】を押下

 

【追記 2018.3.7】実際にやってみて

上記の通りで間違いありません。

トークン方式クレジットカードの設定については、今まで使っていたクレジットカードの情報を引き継ぐことはありません。
「1:モジュール設定の更新」でトークン方式クレジットカードのチェックをすると、今まで使っていたクレジットカードにはチェックを入れることができないので、管理画面で同時に見ながら設定ということはできませんので、クレジットカードの設定はメモなりスクショなり取って置いておくことをお勧めします。
ただ、「トークン方式クレジットカード」から「クレジットカード」にチェックをし直せば、設定内容は残っているので、確認することはできます。

あと、私がひっかかったのは、決済用テンプレート初期化にて、【決済用テンプレートを初期化する。】をチェックという部分です。
きちんと書いてあるのに、怖くてとりあえずチェックせずに進めたら、実際にテストで買い物をしてみたときに、クレジットカード情報をいれる部分が真っ白になりました。そこは(怖がらずに)チェックが必要です。

ACF: Google Map ExtendedにGooglemapAPIkey追加

ACF:GoogleMapExtendedをそのまま使用すると、GoogleMapが表示されません。

GooglemapAPIkeyが足りないからです。

GoogleMapAPIKeyの取得については、いろんなサイトがあるので、そちらにおまかせするとして、ACF: Google Map Extendedのスクリプトのどこをどう触ったか、だけ。

wp-content/plugins/advanced-custom-fields-google-map-extended/acf-google-map-extended-v4.php

のL28の

wp_register_script(“googlemaps-api”, “//maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=places”,array(),’3′,false);

wp_register_script(“googlemaps-api”, “//maps.googleapis.com/maps/api/js?v=3&sensor=false&libraries=places&key=取得したAPIKey”,array(),’3′,false);

です。

 

v5.phpとかにも同様のファイルがありました。v4.phpやv5.phpのどちらを使用するかの条件等まで調べてませんが、v4.phpでうまくいかなかったらv5.phpで試して見られれば。

あと、コアのプログラムを触るのは嫌ですが、急いでたので、コアを触りました。

コアを触らずに変更できる方法があれば、ぜひ教えてくださいませ……。

メールサーバのIPがブロックリストに掲載されてメールが届かない。

メールを送信後、エラーメールが返ってきて、内容を見たらこんな英語が並んでる……。

550 5.7.1 Unfortunately, messages from [***.***.***.***] weren’t sent. Please contact your Internet service provider since part of their network is on our block list . You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.

とか

Deferred: 421 4.7.0 [TSS04] Messages from ***.***.***.*** temporarily deferred due to user complaints; see https://help.yahoo.com/kb/postmaster/SLN3434.html
Message could not be delivered for 5 days Message will be deleted from queue

とか

554 5.0.0 Service unavailable

とか。

よくよく読めばブロックリストに掲載されてますよってことで。

IPを
https://mxtoolbox.com/blacklists.aspx
で検索すると、どのブロックリストに載っているかが一覧で調べられたので便利でした。

一番手っ取り早いのはサーバ業者さんにエラーメール文書を載せて、送ってみるというのかもしれません。

そもそも何でブロックリストに載っちゃったかというと、
SPFレコードの設定をしてなかったからのようです。
SPFレコードの設定してからは、まだ解除申請してないところも、解除されてました。気のせいかもしれませんが。

解除の方法はいろいろと為になるブログがたくさんありますが、
私が参考にしたのは

Barracuda Networks社提供のDNSBLに登録されてしまった時

FortiGuard アンチスパムのブラックリストから解除してもらう方法

会社のドメインがoutlook.comのBlock listにのっかってたので、外してもらったその方法(550 SC-001エラー)

でした。貴重な情報をおまとめいただきありがとうございました。

WAFで403エラー

WAF(ウェブアプリケーションファイアーウォール)が適応されているサーバで、403エラーが出た場合、たいていWAFが原因だと思います。

サイト更新時に出ることが多く、更新内容が問題だったりします。
今まで起こったWAFによる4.3エラーの原因をストックしておきます(と言ってもまだ2件)。

・URLが間違っている。
<a href=””>で指定したURLがタイプミスなどで、その先が404だった場合に起こりました。

・ソースコード内に全角が入っている
滅多にないと思いますが、エクセルの表をHTML化したものをソースで利用するときには要注意です。<table>タグのstyle=”” にfont-familyに「ヒラギノ角」など全角が入っている場合に起こりました。

そうそうないとは思いますが、また増えたら更新します。