プロが教えるわが家の防犯対策術!

全くの初心者でお恥ずかしいのですが、
plaincart(www.phpwebcommerce.com)をSSLにて設置したいと思っています。

下記の式はplaincartのconfig.phpの一部でサーバルートをセットアップする事との
所です。(検討違いかもしれませんが、たぶんこのへんが怪しいと思う所を
コピペします。)

$thisFile = str_replace('\\', '/', __FILE__);
$docRoot = $_SERVER['DOCUMENT_ROOT'];

$webRoot = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);
$srvRoot = str_replace('library/config.php', '', $thisFile);

define('WEB_ROOT', $webRoot);
define('SRV_ROOT', $srvRoot);

以上を

普通のhttpに設置すると(ステップサーバーです。)
img src="/hoge/hogehoge/plaincart/images/image.png"
のようにリンク画像その他が正常にリンク出来るのですが

https (ssl)に設置すると
img src="/export/usr/home/ex********/ssl_html/hoge/hogehoge/plaincart/images/image.png"
のようにSSLディレクトリのパスになってしまい、リンク出来ないで途方にくれています。
どのような理由が考えられますでしょうか?
またどのように記述し直したらsslでもリンクして正常に設置出来るようになるでしょうか?
どうかよろしくお願い致します。

A 回答 (1件)

共有SSLだからだと思います。


#独自ドメインと共有SSLで $_SERVER['DOCUMENT_ROOT']ずれてしまっているんじゃないかと。

とりあえず安直的な対策方法として


$thisFile = str_replace('\\', '/', __FILE__);
$docRoot = $_SERVER['DOCUMENT_ROOT'];
/* 共有SSL対策に以下1行を追加*/
$sslRoot = '/export/usr/home/ex********/ssl_html';

/* 共有SSL対策で修正 */
//$webRoot = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);
$webRoot = str_replace(array($sslRoot, $docRoot, 'library/config.php'), '', $thisFile);
$srvRoot = str_replace('library/config.php', '', $thisFile);

define('WEB_ROOT', $webRoot);
define('SRV_ROOT', $srvRoot);

のようにしてはどうでしょう。
ハードコーディングが入ってしまうので、メンテナンス性が悪いですが
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございます。できました!
ex**********は必要のようでしたので
自分では到底考えられませんでしたが、
NARH様に頂いた式を参考にさせて頂き、
下記のように $ssslRoot = '/ssl_html';
を追加してすべて解決致しました。素晴らしいです。
何日もあれこれいじりましたが分からなかったので大変助かりました。
本当にありがとうございます。
又何かありましたら是非よろしくお願い致します。

$thisFile = str_replace('\\', '/', __FILE__);
$docRoot = $_SERVER['DOCUMENT_ROOT'];
$sslRoot = '/export/usr/home';
$ssslRoot = '/ssl_html';

$webRoot = str_replace(array($sslRoot,$ssslRoot,$docRoot, 'library/config.php'), '', $thisFile);
$srvRoot = str_replace('library/config.php', '', $thisFile);

define('WEB_ROOT', $webRoot);
define('SRV_ROOT', $srvRoot);

お礼日時:2011/03/24 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!