技術

Gsession4 をFreeBSDにインストール

お客様からのご要望でGSession4をインストールしました。
Tomcat7とか85とか9とか試しましたがどうやっても、http://xx.xx.xx.xx:8080/gsession/
で404エラーで「見つからない」ってなります。
tomcatの設定かなーと1日悩みなしたが解決せず。
試しに昔使ってた4.0xx っていうバージョンが手元に残ってたのでいれてみるとサクッと動きました。
となると、tomcatじゃないよなー。。「4.9.3からAdoptOpenJDK(11)にしないと正常動作しない」か??になって
https://groupsession.jp/wbs/bulletin/bbs080.do?bbs010forumSid=1&threadSid=2640

まだ公式サイトで、gsession4.8.2.warがダウンロードできたので、こちらにすると問題なく動きました。
AdoptOpenJDK(11)って、FreeBSDで動くのか??
とりあえず4.8.2でOKで。。

Gsession2からGsession4 のデータの引っ越しは
https://groupsession.jp/support/setup_06.html
で大丈夫でした。

ECCUBE4で謎のエラー

ECCUBE4で謎のエラーが出て苦労したので記録します。

いつかのタイミングでECCUBE4.03のキャッシュの削除処理をすると画面表示にエラーが出て動作しなくなりました。

■トリガー
コンテンツ管理-キャッシュ管理-キャッシュ削除を実行後
■現象
下記エラーが表示される。
Fatal error: Uncaught Doctrine\DBAL\DBALException: Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it. in /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php:434 Stack trace: #0 /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php(115): Doctrine\DBAL\Platforms\AbstractPlatform->getDoctrineTypeMapping(‘enum’) #1 /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(804): Doctrine\DBAL\Schema\MySqlSchemaManager->_getPortableTableColumnDefinition(Array) #2 /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(162): Doctrine\DBAL\Schema\AbstractSchemaManager->_getPortableTableColumnList(‘wp_wfconfig’, ‘[***db名***]’, Array) #3 /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php(264): Doctrine\DBAL\Schema\AbstractSchemaManager->listTableColumns(‘wp_wf in /usr/home/*****/store/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php on line 434

var/cache/の下を削除前のバックアップから戻してやると動作は復旧する。
var/cache/prod/twig/の下は手動で削除しても特にエラーにはならなかった。

■原因
同一データベース内のワードプレス関係のテーブルが有ると発生するらしい。
ワードプレス関係のテーブルを削除すると現象は消えた。

■対処
ECCUBEとワードプレスのデータベースを別々にしました。

5日位もだえました。

フリーダムネットワークスのホスティングサービスメールアドレスをGmailで使用する設定

 

フリーダムネットワークスのホスティングサービスメールアドレスをGmailで使用する設定です。

Gmail側がたまに変わるので、この確認は2020年04月17日版でご了承ください。また変わるかも。

1.Gmailの設定画面を開く。

 

 

 

 

 

 

 

 

2.「アカウントとインポート」をクリックし、「他のメールアカウントのメールを確認」の「メールアカウントを追加する」をクリック。

 

 

 

 

 

 

 

3.「メールアカウントの追加」のウィンドウが開くので、設定するメールアドレス」を入力し、次へ。

4.「他のアカウントからメールを読み込む(POP3)」をチェックして「次へ」

 

 

 

 

 

 

 

 

 

5.「ユーザー名」「パスワード」「POPサーバー」を入力し、「アカウントを追加」をクリック。

「ユーザー名」はメールアドレス、「パスワード」はメールパスワード、「POPサーバー」はPOPサーバー名(mail.ドメイン名)です。

 

 

 

 

 

 

 

 

 

6.「アカウントとインポート」の画面に戻りますので、「名前:」の「他のメールアドレスを追加」をクリックします。

 

 

 

 

 

 

 

7.「自分のメールアドレスを追加」のウィンドウが開きますので、設定するメールアドレスを入力して「エイリアスとして扱います」にチェック。「次のステップ」をクリック

 

 

 

 

 

 

 

 

 

8.「SMTPサーバー名」はmail.ドメイン名 「ユーザー名」はメールアドレス、「パスワード」はメールパスワード、ポートは「25」「保護されていない接続」をチェックし、「アカウントを追加」をクリックで完了です。

 

perlで直下にあるモジュールを込みこんでくれず internal server errorになる!

だいぶ悩んだ。
スクリプトと同じところにモジュールあるのに読んでくれなくて。。
下記らしいです。

Perl 5.26ではセキュリティ上の問題で@INCにカレントディレクトリが含まれなくなります

市販のカートプログラムなので、なかなか改造するわけにいかない。。。
とりあえずモジュールはパスの通っているところに放り込む。

とおもたんですが。。5.24 に変更してとりあえず問題先延ばし。

【ECCUBE】DBのrankとかを変更した際のキャッシュのクリア

以下の中身を削除
/shop/data/cache

【ECCUBE】会員登録フォームおよび注文フォームで性別の初期値を指定する。

会員登録フォームおよび注文フォームで性別の初期値を指定する。

/shop/data/class/helper/SC_Helper_Customer.php
本来なら
/shop/data/class_extends/helper_extends/SC_Helper_Customer.php
なんだと思いますがとりあえず

/shop/data/class/helper/SC_Helper_Customer.phpで
$objFormParam->addParam(‘性別’, $prefix . ‘sex’, INT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’));
末尾に ,2 を追加すると女性が初期選択値になります。

/shop/data/class_extends/helper_extends/SC_Helper_Customer.php
でやるなら

/**
* 会員登録共通
*
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
* @param boolean $isAdmin true:管理者画面 false:会員向け
* @param boolean $is_mypage マイページの場合 true
* @param string $prefix キー名にprefixを付ける場合に指定
* @return void
*/
public function sfCustomerRegisterParam(&$objFormParam, $isAdmin = false, $is_mypage = false, $prefix = ”)
{
$objFormParam->addParam(‘パスワード’, $prefix . ‘password’, PASSWORD_MAX_LEN, ”, array(‘EXIST_CHECK’, ‘SPTAB_CHECK’, ‘ALNUM_CHECK’));
$objFormParam->addParam(‘パスワード確認用の質問の答え’, $prefix . ‘reminder_answer’, STEXT_LEN, ”, array(‘EXIST_CHECK’, ‘SPTAB_CHECK’, ‘MAX_LENGTH_CHECK’));
$objFormParam->addParam(‘パスワード確認用の質問’, $prefix . ‘reminder’, STEXT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’));
// 末尾に女性を示す値”2″を設定
$objFormParam->addParam(‘性別’, $prefix . ‘sex’, INT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’), 2);
$objFormParam->addParam(‘職業’, $prefix . ‘job’, INT_LEN, ‘n’, array(‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’));
// XXX: year,month,dayはprefix付けないのが今のところ共通
$objFormParam->addParam(‘年’, ‘year’, 4, ‘n’, array(‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’), ”, false);
$objFormParam->addParam(‘月’, ‘month’, 2, ‘n’, array(‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’), ”, false);
$objFormParam->addParam(‘日’, ‘day’, 2, ‘n’, array(‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’), ”, false);

// 末尾にHTMLメールを示す値”1″を設定
$objFormParam->addParam(‘メールマガジン’, $prefix . ‘mailmaga_flg’, INT_LEN, ‘n’, array(‘EXIST_CHECK’, ‘NUM_CHECK’, ‘MAX_LENGTH_CHECK’), 1);

if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE) {
$objFormParam->addParam(‘メールアドレス’, $prefix . ‘email’, null, ‘a’, array(‘NO_SPTAB’, ‘EXIST_CHECK’, ‘EMAIL_CHECK’, ‘SPTAB_CHECK’ ,’EMAIL_CHAR_CHECK’));
$objFormParam->addParam(‘パスワード(確認)’, $prefix . ‘password02’, PASSWORD_MAX_LEN, ”, array(‘EXIST_CHECK’, ‘SPTAB_CHECK’ ,’ALNUM_CHECK’), ”, false);
if (!$isAdmin) {
$objFormParam->addParam(‘メールアドレス(確認)’, $prefix . ‘email02’, null, ‘a’, array(‘NO_SPTAB’, ‘EXIST_CHECK’, ‘EMAIL_CHECK’,’SPTAB_CHECK’ , ‘EMAIL_CHAR_CHECK’), ”, false);
}
} else {
if (!$is_mypage) {
$objFormParam->addParam(‘メールアドレス’, $prefix . ‘email’, null, ‘a’, array(‘EXIST_CHECK’, ‘EMAIL_CHECK’, ‘NO_SPTAB’ ,’EMAIL_CHAR_CHECK’, ‘MOBILE_EMAIL_CHECK’));
}
}
}
を追記と思います。

http://black-son.com/php/ec-cube/566 を参考にしました。

Traceback (most recent call last):

https://freebsd.sing.ne.jp/daily/05/02.htmlcerbotを実行すると下記のようなエラーが出た。
jailの環境をコピーしたりして作ったjailで出たんだけど。

> certbot –help
Traceback (most recent call last):
File “/usr/local/bin/certbot”, line 6, in
from pkg_resources import load_entry_point
File “/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py”, line 3138, in

・・・

File “/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py”, line 867, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The ‘acme==0.19.0’ distribution was not found and is required by certbot

/usr/ports/security/py-acme
を reinstall するとうまくいくそうです。

下記に記載がありました。
https://freebsd.sing.ne.jp/daily/05/02.html

Host key verification failed.

sshで接続しようとすると「Host key verification failed.」と表示される。
slogin -v で表示されると

read_passphrase: can’t open /dev/tty: Device busy

が最後の行に表示される。

これは、jexec でログインしているから。

https://ituki.proj.jp/log/20080130.html

【ECCUBE】別のデータベースに商品を移行する。

商品の価格修正などで一旦テストアップをして、その後本アップしたい場合。

商品データだけを本サイトに移したい場合の作業。

移行用のデータベースが作成できることが前提です。

・本サイト用のデータベース(現在のデータベース)
・仮アップ用のデータベース(テストアップ用のデータベース)
・移行後のデータベース  (移行を速やかにするため、このデータベースにすべて移行して切り替える。)

の3つを用意する。テストアップなどは狩りアップ用のデータベースにアップする。)

ここでは、本サイトは shop/ で仮アップは shop_test/ にして、切り替え時は下記作業の後 shop/をshop_bak/ にして、shop_test/をshop/に変更して本稼働とする。

下記の手順で商品データを移行後のデータベースに仮アップ用データベースからコピーする。
手順
1.本サイトのデータベースを移行後のデータベースに丸ごとコピーする。
2.移行後のデータベースに仮アップ用のデータベースから商品データ関係をコピーする。
3.本サイトで使うデータベースを移行後のデータベースに切り替える。

作業
1.移行後用のデータベースに本サイト用のデータベースの内容を丸ごとコピーする。(phpMyAdminなどでエクスポートしてインポートしてコピーのDBを作る)
2.移行後のデータベースに、仮アップ用のデータベースの商品関係データをコピーする。
移行後のデータベースの下記テーブルを一旦空にする。
その後、仮アップ用のデータベースで、「操作」「テーブルを(database.table)にコピーする」-「データのみコピー」でデータをコピーする。
****************************************
カテゴリー
■dtb_category
■dtb_category_count
■dtb_category_category_id_seq
■dtb_category_total_count

規格(登録されていれば必要)
■dtb_class
■dtb_classcategory
■dtb_classcategory_classcategory_id_seq
■dtb_class_class_id_seq

商品
■dtb_products
■dtb_products_class
■dtb_products_class_product_class_id_seq
■dtb_products_product_id_seq
■dtb_product_categories
■dtb_product_status

関連商品
■dtb_recommend_products

商品に対する書き込み
■dtb_review
■dtb_review_review_id_seq

お客様の声(登録されていれば必要)
■dtb_review
*****************************************
商品画像は、「html/upload/save_image」のデータを移行する。

以下サイトを参考にしました。
http://itoben.com/blog/528.html
https://www.kaiplus.com/user_data/move_001_product.php

以上です。

【ECCUBE】商品規格の値を修正の後、「確認」ボタンで確認画面が表示されず修正の画面に戻る。

商品規格の値を修正の後、「確認」ボタンで確認画面が表示されず修正の画面に戻る。

/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php

が規格の編集後の確認画面へのプログラムのファイルのよう。

87行目あたり
if (SC_Utils_Ex::isBlank($this->arrErr)) {
$this->tpl_mainpage = ‘products/product_class_confirm.tpl’;
$this->doDisp($objFormParam);
$this->fillCheckboxesValue(‘stock_unlimited’, $_POST[‘total’]);
$objFormParam->setParam($_POST);
$objFormParam->convParam();
// エラーが発生した場合
} else {
$objFormParam->setParam($_POST);
$objFormParam->convParam();
}

でエラーとなってるから編集画面に戻ってきてるようだ。

エラーチェックは同一ファイル中の322行目くらい

public function lfCheckProductsClass(&$objFormParam)

のところ。送料区分を作って、必須チェックしてたのが規格編集のところで必須チェックに
引っかかってたみたいな感じです。
呼び出しているPHPファイル名から判断して回避させました。

if (SC_Utils_Ex::isBlank($arrValues[‘delivtype’][$i])) {
// 規格編集から来た場合はここは必須チェックさせない。
$hide_myname = basename($_SERVER[‘PHP_SELF’]);
if( $hide_myname<>”product_class.php” ){
$arrErr[‘delivtype’][$i] = ‘※ 送料区分は、いずれかを選択してください。<br />’;
}
}

Translate »