ホーム > カスタマイズ

カスタマイズのアーカイブ

osCommerceをUTF8化、MySQL5対応

osCommerceをUTF8化、MySQL5対応に関する作業内容についてお問い合わせがよくあるのでブログに記しておきます。
必要な作業は以下のとおりです。

DB側 UTF8対応:
1. 新規DBの言語設定状況を確認
2. DBおよびサーバ、クライアントをUTF8に設定
3. 旧DBから新DBにデータを移動

osCommerce UTF8対応:
1. ファイルをすべてUTF8で保存します。
2. 内部でマルチバイト関数を利用している場合、確認の上、修正します。
3. メール送信で件名が文字化けする場合は修正が必要です。

osCommerce MySQL5対応:
1. MySQL5は文法チェックが厳しくなりエラーが発生する場合は、
SQLを書き直す必要があります。

これらの作業が必要です。
すでに改造したosCommerceの場合はその点の確認が必要です。
一括更新を利用されている場合はそちらの修正も必要です。

osCommerce サーバ 引越し

訳あって、osCommerceを別のサーバに引っ越す場合もっとも簡単な方法は、scpでまるごと転送する方法です。
旧サーバから新サーバへ直接転送するので、大量の画像ファイルがあるときもストレスなく移転作業ができます。
どちらのサーバもsshでの接続が許可されている必要があります。

まず、dfでディスクの残量を確認したあと、コンテンツ全体を圧縮します。
下記コマンドでは、public_htmlディレクトリ以下をすべて圧縮しています。

tar czfp public_html.tar.gz  public_html

次に、scpで旧サーバの圧縮ファイルを新サーバへ転送します。

scp public_html.tar.gz ユーザID@新サーバのIPアドレス:転送先ディレクトリ

圧縮ファイルが転送先ディレクトリに届いたら

tar xzf public_html.tar.gz

として、展開して適切なディレクトリに設置します。

この方法で圧縮ファイル14GBを転送したことがありますが、展開したファイルはオーナや権限が元のままなので、
画面がまったく表示されませんでした。
はじめは何が原因なのかわからず、ファイルをひとつひとつ確認していましたが、
ファイルのオーナーが新サーバのそれと違うことがわかり、chownコマンドでオーナを変更して画面を表示できました。

osCommerce ベストセラー 期間のカスタマイズ

osCommerceのベストセラーランキングは、ショップ開始時から注文された個数がすべてカウントされる仕組みのため、最近の売上げトレンドがこのランキングに反映しにくいという欠点があります。
ランキングの期間を月間にするには/catalog/includes/boxes/best_sellers.phpをカスタマイズします。
best_sellers.phpの中にはカテゴリ別のランキング用とトップページのランキング用の2種類のSQLがあります。この両方のSQLにいつ何が売れたかを知るための条件などを追加します。
カスタマイズは、SQLがわからないと難しいかもしれません。
手順のみ記します。

まず、集計期間をどこかで定義しておきます。

define('BESTSELLER_DAYS', 30);

次に、検索対象にordersテーブルとorders_productsテーブルを追加します。
これらを関連させていつ何が売れたかを知ることができます。

TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, "

次に、売上げ個数を合計します。合計結果はrankとしてこの値でソートします。

SUM(op.products_quantity) as rank

集計関数なのでgroup byでp.products_idごとにでまとめるよう指示します。

GROUP BY p.products_id

最後に集計する期間を追加します。

AND TO_DAYS(NOW()) - TO_DAYS(o.date_purchased) <= '" . BESTSELLER_DAYS

この意味は「今日から注文日を引いてその結果が30日以内」ということです。
これで月間ランキングが表示されます。

osCommerceの管理者パスワードを忘れたら

管理画面にログインするためのIDやパスワードを紛失してしまっても再インストール以外に方法があります。
少なくともosCommerceのデータが格納されているデータベースに接続する必要があります。

もっとも簡単な方法はphpMyAdminで接続する方法でしょう。レンタルサーバには必ずこのphpMyAdminが用意されているはずです。操作方法などは自分で学習してもらうとして、phpMyAdminのSQL画面から下記を実行するだけです。

TRUNCATE TABLE  `users`;
TRUNCATE TABLE  `permissions`;

これを実行すると管理者用のIDとパスワード、管理者のレベルを設定したデータがすべて削除され、空になります。
この状態で管理画面にアクセスするとosCommerceの内部でusersテーブルに管理者が登録されているか自動的に確認して、管理者がひとりも登録されていない空の状態を検知して、IDをadmin、パスワードをadminとして管理者を登録します。ログイン画面からこのID、パスワードでログインできます。
ログインできたら、必ず別のIDとパスワードに変更しておきましょう。

osCommerceをiPhone仕様に

英語版のosCommerce をUTF8化して日本語ファイルを追加して、ついでにiPhoneに最適化するための機能を追加してみた。簡単には動作しなかったが、何とか見られるようになった。
一覧がカッコわるいので、そことアイコンなどさらに手直しする予定だ。
http://shop.ynagata.com/mobile_index.php

【最近の検索キーワード】zencart warning php5.3

きっと、これはZen Cartの問題ではなくPHP5.3の制限によるエラー表示があるのでしょう。

PHP5.3には推奨されない機能があり、それらを使用するとエラーが山ほど表示されます。

PHP 5.3.x で推奨されない機能

http://www.php.net/manual/ja/migration53.deprecated.php

自分のソースコードの中では使用していなくてもPEARを利用していると同じようにエラーがでることがあります。

ereg関数などはたくさん使用されていると思いますが、これを書き直すのは正規表現に慣れていないと面倒です。

そこで、

php.iniでは、

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

またはプログラム内で

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

とするとエラーが消えると思います。
(私はまだ試していません)

【最近の検索キーワード】oscommerce 管理画面 書込みに時間がかかる

最近の検索キーワードから思いついたことを書いてみます。

osCommerceの管理画面から操作できるのは大きく分けて商品情報と注文情報です。

検索キーワードから想像すると、注文情報関連のテーブルが巨大になりすぎていると想像します。

1個だけでも重い処理があると、それによって全体のパフォーマンスが落ちて全体の動作が重くなります。

phpMyAdminなどを利用してSQLに合わせて丁寧にインデクスを追加していくとかなり速くなります。

まずはどのクエリが重いのかosCommerceにあるログ機能を使って確認してみてください。

osCommerce PHP4

最近でもときどきPHP4、MySQL4の状態でosCommerceを運営されているお客様からの依頼があるので、そういうお客様のために、PHP4の環境を維持していたが、今後は、安全性の問題もあるため、PHP5への移行を勧めることにしてPHP4の作業は引き受けないことにしようと考えている。
さっそく、開発に使用しているxamppのバージョンを上げた。
osCommerce以外は、PHP5、MySQL5、UTF8があたりまえになっているので、やっと世間に追いついた感じがする。

osCommerceのsession.use_trans_sid

PHPでは、アンカータグでリンクを設定するとセッションが有効の場合、セッション ID がURLに自動的に付加されるという便利な機能がある。

<a href="test.php">test</a>

↓↓↓

<a href="test.php?PHPSESSID=7a0684b53048574fa8609053b8b64065">test</a>

必要があってosCommerceでこの機能を確認したところ、なぜか、まったくその機能が動作しない。当然、session.use_trans_sidはOn(透過的なセッション ID の伝播を有効)にしたがまったく動作しない。クッキーが有効だと表示されないことがあるのでブラウザの設定を変更してみたりした。

簡単なプログラムをつくって

<?php

session_start();

<a href=”test.php”>test</a>

?>

ためしてみると、同じ環境なのにきちんとセッションIDが付加された。osCommerce側で余計なことをしているのではと思い、

/includes/application_top.phpにこの機能をオフにするに設定を見つけた。

if (function_exists(‘ini_set’)) @ini_set(‘session.use_trans_sid’, 0);

この機能を動作しないようにすると、正常にセッションIDが付加されるようになった。これは携帯サイトを作るときなどには必要になると思う。

osCommerceから大量スパムメール

年末、osCommerceを使用しているお客様からメールが届いた。
内容はよくあるスパムメールだった。 まるでお客様が管理している
osCommerceからスパムメールが送信されたようだった。
そのときは、念のため注意喚起のメールを送信した。原因がわからないため、
管理側のIDやパスワードを変更してもらった。
さらに別のお客様のosCommerceからもスパムメールが届いた。
こちらにも注意喚起のメールを送付しておいた。

年が明けて風邪をひいた重たい頭でメールを確認していたところ、
先のお客様のosCommerceからさらに複数のメールが届き始めた。
間違いなくお客様のosCommerceを利用して大量にスパムメールが送信されている。
風邪で起きていられないのでLet’snoteを布団の中で手に持って検索してみると、
英語版のosCommerceのあるバージョンだけにバグがあり、そこから登録会員宛に
スパムメールを大量に送信していたことがわかった。
日本語版を使用している場合は問題ないことがわかりひと安心。

先ほども、はじめての方(海外)から相談のメールが届いた。
被害は世界中に広がっているようだ。

ホーム > カスタマイズ

Page 1 of 912345...最後 »
検索
フィード
メタ情報

ページの上部に戻る