技術

【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 />’;
}
}

shで”Too many authentication failures for なんとか”と怒られる。

/etc/ssh/sshd_config

を設定変更する。

PubkeyAuthentication yes
PasswordAuthentication yes

で明示的にno yesを設定すると行けるようになりました。

Permission denied (publickey).

もこれで解決した。

ここを参照。
http://mitsuakikawamorita.com/blog/?p=387

あるいは。。下記も試す。

password認証のサーバに接続したい場合
上述したクライアントのssh_configに以下の設定を追加してやればいい。

PreferredAuthentications password

【ECCUBE】更新処理に失敗しました

 

EC CUBE2.13.5 で管理画面にログインすると、「更新処理に失敗しました」と表示され画面右サイドが表示されない。
また、クレジットカード決済も失敗するという現象が出ました。
ぐぐるといろいろな改善策がヒットしますが、改善に至りませんでした。

今回の場合、php56-opensslモジュールがうまく動作していなく、再インストールすると現象が改善いたしました。
FreeBSD11 / apache24 / PHP56 の環境でした。

SSL証明書 Let’s Encrypt で httpd-ssl.conf

 

httpd-ssl.conf の書き方。

<VirtualHost **.**.**.**:443>

# General setup for the virtual host
DocumentRoot “/usr/home/hogehoge123-jp”
ServerName www.hogehoge123.jp:443
ServerAdmin root@freedom.ne.jp
ErrorLog “/var/log/httpd-error.log”
TransferLog “/var/log/httpd-access.log”



SSLCertificateFile “/usr/local/etc/letsencrypt/live/www.hogehoge123.jp/cert.pem”
SSLCertificateKeyFile “/usr/local/etc/letsencrypt/live/www.hogehoge123.jp/privkey.pem”
SSLCertificateChainFile “/usr/local/etc/letsencrypt/live/www.hogehoge123.jp/chain.pem”

SSHをパスワード無しでログイン

散々あると思いますが、備忘録。

# ssh-keygen -t rsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
9e:ab:12:04:5d:3d:c7:55:f5:1b:9d:55:91:5f:1f:92

以下のようにキーが作成できていることが確認できます。

# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts

このid_rsa.pubを接続先に送り(/tmp/id_rsa.pub)
接続先にて、以下のようにします。

# touch authorized_keys
# chmod 600 authorized_keys
# cat /tmp/id_rsa.pub >> authorized_keys

Translate »