<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>日曜研究室 〜技術的な日常〜 &#187; EC CUBE</title>
	<atom:link href="http://peta.okechan.net/blog/archives/tag/ec-cube/feed" rel="self" type="application/rss+xml" />
	<link>http://peta.okechan.net/blog</link>
	<description>技術的な観点から日常を綴ります</description>
	<lastBuildDate>Sat, 24 Jul 2010 18:32:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>XREAでEC CUBEを動作させるときにsafe_modeの制限を回避する方法</title>
		<link>http://peta.okechan.net/blog/archives/531</link>
		<comments>http://peta.okechan.net/blog/archives/531#comments</comments>
		<pubDate>Thu, 08 Jan 2009 02:48:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/531</guid>
		<description><![CDATA[はっきり言ってXREAにもEC CUBEにもあまり関わりたくないのですが、そういう話が来てしまうので仕方ありません。 今回はEC CUBEパージョン1系の話です。 何も考えずにXREAにEC CUBEを載せた場合、Apacheモジュールとして動作するsafe_mode onのPHP上で動作することになります。 これで一見普通に動作するように見えるのですが、XREAではApacheモジュールのPHPによって生成されたファイルは所有者がapacheユーザとなる仕様となっており、さらにsafe_modeがonなのでそれらのファイルが既存のPHPのスクリプトから読み込めないという問題が起きます。 （safe_mode onではファイルの所有者（uidもしくはgid）が違うとオープンできない。） つまり、例えば管理画面のページ詳細設定からページを追加してもそのページが実際に表示できないということになります。 （バージョン2系は知りませんが、ページ詳細設定では実は追加だけでなく更新でも内部で一旦削除してから作成しなおしてるようで、更新だけでも同じ問題が発生します。） この問題をXREA上で回避するには、safe_modeがoffとなるCGIモードでPHPを動作させる方法があります。 なぜCGIモードではsafe_modeがoffになるかというと、XREAの場合はCGIモードのPHPはsuEXEC環境、つまりユーザ権限で動作するので、ファイルの読み書き権限をOS側で設定されたパーミッションにより判定できるからです。 逆にApacheモジュールモードでは全てのユーザーのスクリプトがapacheユーザ権限で動作してしまうために、apacheユーザからアクセスできるファイルにはどのユーザの物であろうとアクセス出来てしまうためにsafe_modeがonになっています。 ちょっと話がそれましたが、XREA上でCGIモードでPHPを動作させる方法はググればすぐ出てくるのですが、せっかくなので書いておきます。 XREAではドキュメントルートの.htaccessに以下の一行を記述するだけで配下の.phpファイルをCGIモードで動作させることが出来ます。 AddHandler application/x-httpd-phpcgi .php ディレクトリを分けてる場合はもちろんドキュメントルートじゃなく、適用したいディレクトリのトップに設置するだけでもOKです。 これによりPHPにより生成されたファイルにアクセスできない問題が解決するのですが他の問題が起きます。 XREAではCGIモードのPHPでは、magic_quotes_gpcがonになってしまうのです。.htaccessに「php_flag magic_quotes_gpc off」と書こうが反映されません。 EC CUBE側ではmagic_quotes_gpcの違いを吸収する作りにはなってないので、例えば管理画面のページ詳細設定からhtmlソースをPOSTしようとするとダブルクオーテーションがエスケープされて正常に表示されなくなったりします。 この問題を回避するには以下の一行を記述したphp.iniファイルを置いておけばいいのですが、 magic_quotes_gpc = off このphp.iniファイルはスクリプトが動作するディレクトリに置いておく必要があります。 EC CUBEで作ったサイトのURLを注意深く見た人なら分かると思いますが、EC CUBEはルートのindex.phpでディスパッチするような作りにはなっておらず、実に様々なディレクトリで動作するようになっています。 そう、必要なディレクトリ全てにphp.iniファイルを設置するのはすごく面倒なのです。 というか、どのディレクトリにphp.iniを設置すべきか否か洗い出すこと自体が面倒です。 そこでphp.iniが設置され過ぎてても問題ないだろうという考えから、全てのディレクトリに設置することにしました。 でまず、再帰的にディレクトリの一覧を作成する方法ですが、今回はこういう風にしました。 ls -R &#124; grep / > directorylist.sh これでカレントディレクトリからサブディレクトリの中まで含めたディレクトリだけのリストが取得できます。 あとは生成したdirectorylist.shを編集して、ルートに作成しておいたphp.iniをcpコマンドで各ディレクトリにコピーするスクリプトを作成し実行するだけです。 一応今回作成したスクリプトがどんなものか頭の方だけ載せておきます。実際はこんな調子で250行以上になります。 秀丸で2回だけ置換して行頭を付け足して作成しました。所要時間約30秒。 #!/bin/bash cp ./php.ini ./abouts/php.ini cp [...]]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/531/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>サーバー移行後EC-CUBEで作ったサイトの表示がおかしい</title>
		<link>http://peta.okechan.net/blog/archives/366</link>
		<comments>http://peta.okechan.net/blog/archives/366#comments</comments>
		<pubDate>Wed, 13 Aug 2008 08:52:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/366</guid>
		<description><![CDATA[社内サーバーでテスト中のEC－CUBEで作ったサイトの見た目が微妙におかしい。という連絡を受けまして色々調べました。 結果にたどり着くまでには色々と苦労があったのですが、要はdata/Smarty/template_cディレクトリに古いファイルが残ってたのが原因でした。ということでdata/Smarty/template_c配下をばっさりと消去して無事解決しました。 しかし、なぜtemplate_cに古いファイルが入ってたのか、移行前はそんな問題なかったのにと不思議に思い移行時の手順を思い出してみました。 破損ファイルが含まれているかもしれないディレクトリ全体をコピーしてくるよりはSubversionで管理されているファイルに関しては、ある程度の整合性は保障されてるかなと思い、まず、新しい環境で最新リビジョンをチェックアウトしてから、管理外のファイルだけをrsyncを駆使してコピーしました。 ここで気づきました。要はSubversionにtemplate_cの中の古いファイルがコミットされてたのです。つまりチェックアウト時に古いファイルが配置されてしまっていたのです。サーバー側のファイルはアップデートしかしませんから、リポジトリより実際のファイルが新しい分には問題が出なかったわけですね。 サーバー移行時にはキャッシュを消しましょうなんて常識的なことを忘れていたため、30分も無駄にしてしまいましたorz]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/366/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EC-CUBEで商品編集時に編集できない項目がある</title>
		<link>http://peta.okechan.net/blog/archives/294</link>
		<comments>http://peta.okechan.net/blog/archives/294#comments</comments>
		<pubDate>Thu, 26 Jun 2008 09:04:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/294</guid>
		<description><![CDATA[商品情報編集ページで編集できない項目がいくつかあるよとお客様から問合わせが。 実際に見てみると確かに、商品情報新規登録ページには存在する「商品コード、通常価格、販売価格、在庫数」の4つの項目が、商品情報編集ページには見当たりません。商品コードはともかく、他の数が後から変更できないのは痛すぎます。（EC-CUBEでは商品コードも主キーではなくただの文字列扱いだったはずで全部編集できてもいいはず。） ということでEC-CUBEのバグなのか仕様なのか調査してみましたが、どうも仕様みたい。 ソースを読んでみるとどうも「商品に規格が関連付けられている場合に4つの項目をを表示しない」ようになっている様子です。 ん？と思って、規格登録のページ（商品編集ページのリンクと並んで表示される「規格」のリンク先）をブラウザで見てみると、そこで4つの項目が規格ごとに編集できるようになってました。 そりゃそうですよね。同じ商品でも規格の違い、例えば、おまけの有る無しや、色違いなどで、在庫数や価格が違うのは当たり前ですからね。これを、色んな規格の数字を1つの数字の入力だけで編集なんて論理的に無理です。まぁ、無理すれば(=妙な仕様にすれば)やれますけどそれじゃあ使いづらいですからね。 ということで、商品編集で4つの項目が出ないのはバグではなく仕様でした。その4つの項目を編集するには、規格登録のページから規格ごとにやってくださいってことです。 この程度のことくらい把握しとけよ&#62;自分]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/294/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EC CUBE高速化 &#8211; 規格編集画面</title>
		<link>http://peta.okechan.net/blog/archives/193</link>
		<comments>http://peta.okechan.net/blog/archives/193#comments</comments>
		<pubDate>Mon, 01 Oct 2007 06:32:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/193</guid>
		<description><![CDATA[[comu-ml 0103] Re: 規格数が多い場合に「規格」編集画面に移動で EC CUBEでは同じ商品の色違いやサイズ違いなどが「規格」という概念で扱いやすくなってるのですが、(「規格」が無いと同じ商品なのに色違いなどで別々に商品登録するハメになったり、買う側も閲覧が不便になるなどということが起こりえます） 商品数や規格数が増えてくると規格編集ページの表示にものすごく時間がかかるという話です。 最近、会社の人がEC CUBEで構築したショッピングサイトに一生懸命商品を登録していたのですが、規格編集のページの表示ができなくなったという報告を受けて調査してみました。 すると商品数800以上、規格数1000以上の状態で、規格編集のページの表示に数分掛かるようになっていました。 サーバにログインしてtopコマンドを打ってみると、mysqlの負荷が高いことが判明。 とりあえず、いくつかの商品関連のテーブルのキーになる可能性のある項目にインデックス張ってみると(EC CUBEの初期状態ではさほどDBのチューニングはされていない感じです)、処理時間が3分の1程度になりました。 まぁ、数分の3分の1 = 数十秒なのでまだまだ全然ダメです。 ということで、DBのチューニングだけでは解決しないっぽいので、PHPのソースの中に埋め込まれているSQL文を見てボトルネックを探すことに。 するとありました。いかにも遅そうなSQL文が。 規格組み合わせ一覧の取得をするfunctionの中に、ビューとサブクエリとJOINを同時に含むクエリがありました。 色々と高速化する方法は思い浮かぶのですが、面倒なのでとりあえずググってみたら、冒頭のページを発見！ とりあえずそのままコピペしたら問題なく動作し劇的に早くなりました。（1秒以内） バージョンは1.3.4です。]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/193/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EC CUBEでmobileフォルダ(携帯用フォルダ)の文字化けの問題</title>
		<link>http://peta.okechan.net/blog/archives/189</link>
		<comments>http://peta.okechan.net/blog/archives/189#comments</comments>
		<pubDate>Wed, 19 Sep 2007 08:48:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>
		<category><![CDATA[携帯電話]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/189</guid>
		<description><![CDATA[現在、会社の仕事のほうでEC CUBEを使ったショッピングサイトを4サイトほど同時進行で作成しております。 とりあえずその中の1サイトの本番運用を開始したわけなのですが、本番環境にていきなり携帯電話向けの全てのページで文字化けが発生しました。もちろんすぐに修正したのですが、同じ問題でお悩みの方のためになればと思い、文字化けに至った経緯と解決法を書いておきたいと思います。 経緯その1：エントランスページの追加 諸般の事情により、EC CUBEにエントランスページを追加することになりました。追加と言ってもEC CUBEのシステムに組み込むわけではなく、index.htmlというファイル名で静的なHTMLのエントランスページを作成し、そのエントランスページからEC CUBEのトップページ(index.php)へリンクするという簡単な追加です。 経緯その2：トップレベルの.htaccessの修正 たまたま、Apacheの設定(httpd.conf)の、DirectoryIndexの設定で、index.htmlよりindex.phpが前にあったので、EC CUBEのトップディレクトリの.htaccessにDirectoryIndex index.htmlを追加。(このときindex.phpを設定しなかったことに深い考えはありませんでした。今になって考えるとここが問題の原因でした。) 経緯その3：管理画面の不具合対応 管理画面にログインできないことが発覚。いや、正確に言うと、EC CUBEの管理画面はadminというディレクトリ内になるのですが、今までhttp://**********/admin/でアクセスできていたのが、経緯その2の変更によってアクセスできなくなっていました。http://*******/admin/index.phpへアクセスすると問題はありませんでした。そこで、adminディレクトリに.htaccessを作成しDirectoryIndex index.phpを追加しました。そして管理画面は正常に動作するようになりました。 経緯その4：モバイル版ページの不具合対応 EC CUBEのモバイル版ページはmobileというディレクトリ内になるのですが、経緯その3の管理画面の時と同じ症状が起きていました。そこで単純に経緯その3の時と同じ対応をしようと思い、.htaccessを作るのが面倒だったのでadminのディレクトリからコピーして作成しました。 このとき致命的なミスをしていました。実はmobileのディレクトリには元々.htaccessがあったのです。しかもmb_string関連の設定がされている.htaccessでした。それをよく確認もせずに知らずに上書きしてしまったのでした。 これが直接の原因となってモバイル版ページが全て文字化けするという事態になったのでした。 解決法 今回の問題の直接の原因は経緯4で行った対応で.htaccessのmb_string関連の設定を消してしまったことでした。なので、mobileの.htaccessを元に戻しつつDirectoryIndex index.phpを追加しても良かったのですが、根本的には経緯2でトップレベルの.htaccessのDirectoryIndexの設定にindex.htmlだけじゃなく、index.html index.phpと設定しておけば、それ以降の問題は発生しなかったのです。 実際は経緯その1～4まで時間的な間隔が日単位で開いてたので、行き当たりばったりな対応をしてしまいましたが、 本来なら経緯その1の時点で経緯その4までのことを見通すべきだと思いました。 今回に限らず、サーバ管理全般的に最近グダグダになりつつあるので、この辺で気を引き締めて行きたいと思います。]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/189/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EC CUBEのインストール方法</title>
		<link>http://peta.okechan.net/blog/archives/64</link>
		<comments>http://peta.okechan.net/blog/archives/64#comments</comments>
		<pubDate>Sat, 16 Jun 2007 16:39:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[EC CUBE]]></category>

		<guid isPermaLink="false">http://peta.okechan.net/blog/archives/64</guid>
		<description><![CDATA[EC CUBEをインストールしてみました。 以下のアドレスで見ることができます。 http://peta.okechan.net/ecc/ 仕事でECサイト構築したりなどやってる訳で、主にZen Cartをカスタマイズして使用しているのですが、どーもいまいちデザイナさん受けが良くない。 Zen Cartのソースを見たことがある人なら分かると思いますが、特に何かのテンプレートエンジンを採用してる訳ではなく、MVCモデルで言うところV部分のソースが、ゴリゴリとphpとhtmlが混ざった状態で書かれています。 phpもhtmlも読める(+Zen Cartの仕組みを知ってる)人間にとってはデザインの変更もそんなに難しくないのですが、phpが読めないデザイナ(というよりはシステム設計のパターンを知らない人)にとっては、難解極まりないらしく、そういった人にかなり不評です。(しかも自分の無知を棚に上げる人ほどブーブー文句を言う。) しかし、phpとhtmlが混ざってるのも古臭くて美しくないのも事実です。 そこでより良いECサイト構築ソフトウェアがないか色々調べてたら、EC CUBEお勧めな記事がありました。 EC CUBEという名前は知ってたのですが、あまり評判自体を聞かないのでスルーしてました。 これ良いよと言ってる人がいる以上は試してみる価値があると思い、EC CUBEをインストールしてみました。 その時のメモを残しておきます。 1.EC CUBEのダウンロード 以下のサイトより、最新版をダウンロード。今回はVersion 1.3.2が最新でしたのでそれをダウンロードしました。 http://www.ec-cube.net/download/index.php 2.ファイルの配置 ダウンロードしたファイルを解凍し、webサーバのドキュメントルートへ配置しました。 EC CUBEには大きく2つのディレクトリが存在します。htmlとdataというディレクトリですが、html内のファイルをドキュメントルートへ、dataディレクトリをドキュメントルートへディレクトリごと配置しました。 こんな感じです。 ドキュメントルート ├ダウンロードしたもののhtmlディレクトリ内にあったファイルやディレクトリなど ├〃 ～（省略) ├〃 └data 　├ ダウンロードしたもののdataディレクトリ内にあったファイルやディレクトリなど 　├ 〃 　～（省略） 　└ 〃 以降、ドキュメントルートをdrと書きます。 セキュリティの観点から本当ならばドキュメントルートの外にdataフォルダを置きたかったのですが、ちょっと他の環境的に面倒だったので、今回はとりあえずこんな形にしてます。 3.設定ファイルの変更 dr/define.phpのHTML2DATA_DIRを/data/へ書き換えて保存します。 4.ディレクトリの権限設定 それぞれ以下のように変更します。 dr/install/temp→(777) dr/data/install.php→(666) dr/user_data→(777) dr/cp→(777) dr/upload→(777) dr/data/Smarty/templates_c(777) dr/data/downloads→(777) dr/data/logs→(777) [...]]]></description>
		<wfw:commentRss>http://peta.okechan.net/blog/archives/64/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
