Missing base_urlが表示されて、インストールできない。  【解決済み】

質問全般・改善要望
返信する
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

こんにちは、いつもお世話になっております。

下記の環境下で、MODXがインストールできなくて困っております。
お力を貸していただけたら幸いです。

-----
利用サーバ:WADAXサーバー(Gタイプ、マルチドメイン可)
MODXのバージョン:1.0.14J-r7
PHPのバージョン:5.3.3
MySQLのバージョン:5.1.73
-----

インストール用のデータを一式、FTPでアップロードした後、
index.phpにアクセスすると、下記のエラーメッセージが表示され、
インストール画面に移行できません。

Missing base_url

どうも、manager/include/initialize.inc.phpの所でひっかかっていて、
PHPの環境変数の値に問題があるような感じです。
(以下、serveridは任意の数字、usernameは任意の文字列)

["DOCUMENT_ROOT"]=>
string(26) "/home/homepage/public_html"

["SCRIPT_FILENAME"]=>
string(56) "/home/serverid/username/public_html/index.php"

["REQUEST_URI"]=>
string(29) "/~username/index.php"
["SCRIPT_NAME"]=>
string(29) "/~username/index.php"
["PHP_SELF"]=>
string(29) "/~username/index.php"


ドメインを設定する前の、借りたての状態で作業をしていて、
ブラウザからは下記のアドレスでアクセスすることになります。
http://wx00.wadax.ne.jp/~username/

ドメイン設定後であれば、問題ないのではないかと思われますが、
他所からの引っ越しのために、
ドメイン設定前にサイトを準備しておく必要があって、
どうしたものかと考えあぐねています。

解決策はありそうでしょうか?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by yama »

ちょっとしたことで解決できそうに見えます。お使いのサーバのプランは試用はできますか?試用できるなら実際にインストールして修正してみます。
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

yamaさん、ご返信いただきありがとうございます。
サーバーはWADAXのGタイプですが、調べてみましたが、残念ながら試用はできないようです。

知り合いがパッチを書いてくれて、とりあえずインストールはできたのですが、
modxをよく知らないため、ここだけの変更で良いのかわからない…とのことでした。

もし差し支えなければ、コードを見ていただいてもよろしいでしょうか?

initialize.inc.phpの108行目あたりからを下記に変更しました。

コード: 全て選択

        function get_base_url($base_path)
    {
        if(defined('IN_MANAGER_MODE'))
        {
            if(strpos($_SERVER['REQUEST_URI'],'/manager/')!==false)
                return substr($_SERVER['REQUEST_URI'],0,strrpos($_SERVER['REQUEST_URI'],'/manager/')) . '/';
            elseif(strpos($_SERVER['REQUEST_URI'],'/assets/')!==false)
                return substr($_SERVER['REQUEST_URI'],0,strrpos($_SERVER['REQUEST_URI'],'/assets/')) . '/';
        }
        
        $SCRIPT_NAME = preg_replace('/^\/~[a-zA-Z0-9\-]+\//','/',$_SERVER['SCRIPT_NAME']);
        $REQUEST_URI = preg_replace('/^\/~[a-zA-Z0-9\-]+\//','/',$_SERVER['SCRIPT_NAME']);
        
        if(strpos(str_replace('\\','/',$_SERVER['SCRIPT_FILENAME']),$SCRIPT_NAME)===false)
        {
            if(strpos(str_replace('\\','/',$_SERVER['SCRIPT_FILENAME']),'/install/index.php')!==false)
                return substr($REQUEST_URI,0,strrpos($REQUEST_URI,'/install/')) . '/';
            else {
                echo 'Missing base_url';
                exit;
            }
        }
        $pos = strlen($_SERVER['SCRIPT_FILENAME']) - strlen($SCRIPT_NAME);
        $dir = substr($_SERVER['SCRIPT_FILENAME'],$pos);
        $dir = str_replace('\\', '/', $dir);
        $dir = substr($dir,0,strrpos($dir,'/')) . '/';
        $dir = preg_replace('@(.*?)/manager/.*$@', '$1', $dir);
        $dir = preg_replace('@(.*?)/assets/.*$@', '$1', $dir);
        if(substr($_SERVER['REQUEST_URI'],0,2)==='/~') $dir = '/~' . substr($dir,1);
        $dir = rtrim($dir, '/') . '/';
        return $dir;
    }
※テスト用のecho文を削除しました。(19:45)
最後に編集したユーザー ethmo [ 2015年1月05日(月) 19:45 ], 累計 1 回
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by yama »

$_SERVER['SCRIPT_NAME']と$_SERVER['REQUEST_URI']の値をそのまま使わず、チルダ付きのユーザ名バーチャルディレクトリ?の文字列を削除してますね。また、インストール時のみ、$_SERVER['REQUEST_URI']は$_SERVER['SCRIPT_NAME']の値と同じにしてますね。
後ほど、もう少し見てみます。実際に試せる同等条件のサーバがあるか探してみます。
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

見ていただいて、ありがとうございます。

$_SERVER['SCRIPT_NAME']と$_SERVER['REQUEST_URI']の値に、チルダ付きのユーザー名が入ってしまうのが、
インストール画面の表示されない原因だったようなので、そこを整合性が取れるように修正したみたいでした。

お手数おかけしますが、よろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Missing base_urlが表示されて、インストールできない。  【解決済み】

投稿記事 by yama »

コード: 全て選択

if(!isset($base_path)) $base_path = $init->get_base_path();
if(!isset($base_url))  $base_url  = $init->get_base_url($base_path);
if(!isset($site_url))  $site_url  = $init->get_site_url($base_url);
initialize.inc.phpには上記のような記述があります。これらの値はautoload.phpというファイルでプリセットできる仕様になってます。

コード: 全て選択

<?php
$base_url = '/~username/';
上記のような内容でautoload.phpというファイルを作成し、MODXの設置ディレクトリに置いてみてください。
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

yamaさん、ありがとうございました。
autoload.phpの設置で、インストールできました。
大変助かりました。

今、サイトを作り込んでいるところですが、動作に問題はないようです。
何か気になる症状が出たら、また書き込ませていただきます。

ひとまず解決ということで、本当にありがとうございました。
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

お世話になってます。

先日は、インストールのトラブルを解決していただいてありがとうございました。
大変助かりました。

実は、対象であるサイトが、
将来的にドメインが下記のように、独自ドメインに変更になるのですが、

http://wx00.wadax.ne.jp/~username/
 ↓
http://domain.com/

その場合は、ルート直下に置いてあるautoload.phpは削除した方が良いでしょうか?
注意点があれば教えてください。

どうぞよろしくお願いいたします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by yama »

はい、独自ドメインに変わった時は削除してください。
ethmo
メンバー
メンバー
記事: 17
登録日時: 2010年1月03日(日) 15:13

Re: Missing base_urlが表示されて、インストールできない。

投稿記事 by ethmo »

早速の返信ありがとうございます!

了解いたしました!
返信する