バージョン選択

フォーラム

メニュー

オンライン状況

52 人のユーザが現在オンラインです。 (45 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 51
tattsu もっと...

サイト内検索

質問 > その他 > PHPバージョンアップ後、「全ページ対象SEO管理プレミアム 1.7 プラグイン」につき不具合

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
wa.shi
投稿日時: 2018/6/14 16:22
対応状況: 解決済
常連
登録日: 2018/2/20
居住地:
投稿: 45
PHPバージョンアップ後、「全ページ対象SEO管理プレミアム 1.7 プラグイン」につき不具合
EC-CUBE Version 2.12.3
PHP Version 5.6.36
DB サーバー MySQL 5.5.38
WEB サーバー Apache/2.2.15 (CentOS)


いつもお世話になっております。
そして連投大変申し訳ございません。

昨日、PHPのバージョンを5.3 → 5.6 へアップし、
DB処理エラーにつき一度サイト全体がシステムエラーとなり、
下記の error.log ようなエラーでしたので、
DB上で「全ページ対象SEO管理プレミアム プラグイン」を無効にしてみたら
とりあえず大丈夫でした。

しかし、このまま無効にしているわけにもいかなく…。



PHP5.3の際は問題なかったのですのが、
原因等、検討が付きましたら
ご教授頂けますでしょうか。


どうかよろしくお願い致します。



error.log内容

2018/nn/nn 19:02:09 [/park/detail.php] Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [PREPARE mdb2_statement_mysql_16726a17b28fec836600a7abcc6020718d779dbb23 FROM 'SELECT \'category\' AS type, category_id AS id, category_name AS name, parent_category_id AS parent_id, \'products/list.php?category_id=\' || category_id AS url, plg_seoextension_sitemap, plg_seoextension_sitemap_https FROM dtb_category WHERE category_id <> 0 AND (plg_seoextension_sitemap = 1 OR plg_seoextension_sitemap_https = 1) ORDER BY rank DESC ']
PlaceHolder: [array (
)]
MDB2 Error: not found
[Error message: Unable to bind to missing placeholder: 0]
on [/home/bbq/html/data/class/SC_Query.php(1064)] from 126.254.5.210
customer_id =
/ドメイン/html/park/detail.php(38): LC_Page_Park_Detail_Ex->process
/ドメイン/html/data/class_extends/page_extends/park/LC_Page_Park_Detail_Ex.php(56): LC_Page_Park_Detail->process
/ドメイン/html/data/class/pages/park/LC_Page_Park_Detail.php(118): LC_Page->sendResponse
/ドメイン/html/data/class/pages/LC_Page.php(135): SC_Helper_Plugin->doAction
/ドメイン/html/data/class/helper/SC_Helper_Plugin.php(133): call_user_func_array
(): SeoExtension->process
/ドメイン/html/data/downloads/plugin/SeoExtension/SeoExtension.php(462): SeoExtension->getSitemapCategories
/ドメイン/html/data/downloads/plugin/SeoExtension/SeoExtension.php(895): SC_Query->select
/ドメイン/html/data/class/SC_Query.php(167): SC_Query->getAll
/ドメイン/html/data/class/SC_Query.php(284): SC_Query->execute
/ドメイン/html/data/class/SC_Query.php(1027): SC_Query->error
/ドメイン/html/data/class/SC_Query.php(1064): trigger_error



該当のソースコード
/**
* デバイスごとに各ページmeta情報をセットする
*
* @param LC_Page $objPage
* @param int $device デバイスタイプid
* @return void
*/
function setMeta($objPage, $device){
$objQuery =& SC_Query_Ex::getSingletonInstance();
$page = $_SERVER['SCRIPT_NAME'];
$productId = $_GET['product_id'];
$categoryId = $_GET['category_id'];
if(!$categoryId) $categoryId = 0;
$col = 'plg_seoextension_author,
plg_seoextension_description,
plg_seoextension_keyword,
plg_seoextension_robots,
plg_seoextension_copyright,
plg_seoextension_coverage,
plg_seoextension_area,
plg_seoextension_classification,
plg_seoextension_rating,
plg_seoextension_title,
plg_seoextension_h1';

if(strstr($page, 'products/detail.php')){
$result = $objQuery->select($col, 'dtb_products', 'product_id = ?', array($productId));
}elseif(strstr($page, 'products/list.php')){
$col .= ',plg_seoextension_p';
$result = $objQuery->select($col, 'dtb_category', 'category_id = ?', array($categoryId));
}elseif($page == ROOT_URLPATH.'index.php'){
$result = $objQuery->select($col, "dtb_pagelayout", "url = 'index.php' AND device_type_id = ?", array($device));

//ADD
}elseif(strstr($page, 'park/detail.php')){
$url_name = $_GET['url_name'];
$result = $objQuery->select($col, 'dtb_park', 'url_name = ?', array($url_name));


}else{
$arrPageUrl = explode('/', $page);
$cnt = count($arrPageUrl);
$page = $arrPageUrl[$cnt-2].'/'.$arrPageUrl[$cnt-1];
$result = $objQuery->select($col, "dtb_pagelayout", "url LIKE '%".$page."%' AND device_type_id = ?", array($device));
}
foreach ($this->arrColumn as $column) {
$objPage->$column = $result[0][$column];
}
}

// ツリーから検索 PCサイトマップページ用
function getSitemapParent(&$tree, $id, &$p) {
foreach ($tree as $key => $value) {
if ($value['type'] == 'category' && $key == $id) {
$p['parent'] = &$tree[$key];
return true;
}
if (isset($value['children'])) {
$result = $this->getSitemapParent($tree[$key]['children'], $id, $p);
if ($result) return true;
}
}
return false;
}

// カテゴリツリーを作成 PCサイトマップページ用
function getSitemapCategoryTree($categories, $products) {
$rows = array_merge($categories, $products);
$categoryTree = array();
foreach ($rows as $row) {
if ($row['parent_id'] == 0) {
$categoryTree[$row['id']] = $row;
} else {
$p = array();
$this->getSitemapParent($categoryTree, $row['parent_id'], $p);
if (!isset($p['parent']['children'])) {
$p['parent']['children'] = array();
}
$p['parent']['children'][$row['id']] = $row;
}
}
return $categoryTree;
}

// カテゴリリストを取得 PCサイトマップページ用
function getSitemapCategories() {
$objQuery =& SC_Query::getSingletonInstance();
$objQuery->setOrder('rank DESC');
return $objQuery->select(
"'category' AS type, category_id AS id, category_name AS name, parent_category_id AS parent_id".
", 'products/list.php?category_id=' || category_id AS url, plg_seoextension_sitemap, plg_seoextension_sitemap_https",
"dtb_category",
"category_id <> 0 AND (plg_seoextension_sitemap = 1 OR plg_seoextension_sitemap_https = 1)"
);
}

// 商品リストを取得 PCサイトマップページ用
function getSitemapProducts() {
$objQuery =& SC_Query::getSingletonInstance();
$objQuery->setOrder('parent_id, rank DESC');
return $objQuery->select(
"'product' AS type, T1.product_id AS id, name, category_id AS parent_id".
", 'products/detail.php?product_id=' || T1.product_id AS url, plg_seoextension_sitemap, plg_seoextension_sitemap_https",
"dtb_products T1 LEFT JOIN dtb_product_categories T2 ON T2.product_id = T1.product_id",
"del_flg = 0 AND status = 1 AND (plg_seoextension_sitemap = 1 OR plg_seoextension_sitemap_https = 1)"
);
}

// ページリストを取得 PCサイトマップページ用
function getSitemapPagelayouts() {
$objQuery =& SC_Query::getSingletonInstance();
$objQuery->setOrder('plg_seoextension_rank DESC, page_id');
$rows = $objQuery->select(
'page_id, page_name, url, plg_seoextension_sitemap_name, plg_seoextension_sitemap_indent, plg_seoextension_sitemap_https',
'dtb_pagelayout',
'(plg_seoextension_sitemap = 1 OR plg_seoextension_sitemap_https = 1) AND device_type_id = 10 AND page_id != 0'
);
foreach ($rows as $key => $row) {
$rows[$key]['url'] = preg_replace('/^index.php$/', '', $rows[$key]['url']);
$rows[$key]['url'] = preg_replace('/\/index.php$/', '/', $rows[$key]['url']);
}
return $rows;
}
468
投稿日時: 2018/6/15 10:58
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: PHPバージョンアップ後、「全ページ対象SEO管理プレミアム 1.7 プラグイン」につき不具合
Unable to bind to missing placeholder: 0
というメッセージですので、プレースホルダーが見つからないという意味かと思います。

もしかしたら、urlの項目の「products/list.php?category_id=」にある「?」に反応しているのではないでしょうか?

あと、1点気になったのですが、SQL文の「'products/list.php?category_id=' || category_id AS url」の箇所で
文字連結をしてURLを出力しようとしているように見受けられますが、
通常、MySQLは「||」は文字連結ではなく、ORとして扱われると思います。
「||」を文字連結関数のCONCATとして動作するように設定をされているのでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

wa.shi
投稿日時: 2018/6/15 15:15
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 45
Re: PHPバージョンアップ後、「全ページ対象SEO管理プレミアム 1.7 プラグイン」につき不具合
ご回答ありがとうございます。


引用:

Unable to bind to missing placeholder: 0
というメッセージですので、プレースホルダーが見つからないという意味かと思います。

もしかしたら、urlの項目の「products/list.php?category_id=」にある「?」に反応しているのではないでしょうか?

あと、1点気になったのですが、SQL文の「'products/list.php?category_id=' || category_id AS url」の箇所で
文字連結をしてURLを出力しようとしているように見受けられますが、
通常、MySQLは「||」は文字連結ではなく、ORとして扱われると思います。
「||」を文字連結関数のCONCATとして動作するように設定をされているのでしょうか?


ご回答いただきました内容を基に
調査させて頂きます。
何か進展等ございましたら
ご報告させて頂きます。
wa.shi
投稿日時: 2018/6/19 10:27
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 45
Re: PHPバージョンアップ後、「全ページ対象SEO管理プレミアム 1.7 プラグイン」につき不具合
その通りでございました。

本番環境なので、
一先ず、SQL文を改訂し
その後、MYSQLの設定を見直していこうと
思います。

この度は、誠に有難うございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,689名です
総投稿数は109,934件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1280
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.