人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VPSサーバーにPleskを入れて独自ドメインで利用しており、サブドメインを設定しています。

www.example.jp(メイン)
aaa.example.jp(サブ)
bbb.example.jp(サブ)

のような状態です。
メインとサブドメイン全てでSmartyを利用しており、それぞれにSmartyを設置する手間を省きたいと考え、サブドメインからメインのSmartyにアクセスしたいと思っています。
※今後、サブドメインを数百設置する予定です。

PHPなどで、以下のようにインクルードしているものを
include "./smarty/Smarty.class.php";

以下のようにしたいのですが
include "メインのパス/smarty/Smarty.class.php";

サブドメインからメインへのアクセス権限がないようで、アクセスすることができない状態です。

本来、このようなことは可能なのでしょうか?
可能であれば解決策をお教え下さい。

●質問者: liser
●カテゴリ:ウェブ制作
✍キーワード:.jp aaa Class PHP Plesk
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● t_shiono
●23ポイント

可能です。

が、お使いの環境で可能かは判断しかねます。

共有サーバをPleskで管理する場合、殆どの場合にPHPセーフモード機能によりアクセスできるディレクトリを制限しています。

参考:

http://manual.xwd.jp/features.safe-mode.html

この機能を無効にする、あるいは、この機能で許可する場所(例えば、/usr/lib/php)を増やし、/usr/lib/php/smartyなどとして配置することにより、可能です。


これらの設定は、おおもとのhttp.confまたは、各サブドメインごとに作成されている設定ファイル(たとえば、httpd.includeなど)の中で設定されていますので、一度ごらんになってはいかがでしょうか?

◎質問者からの返答

すみません。情報が足りなかったですね。

PHPはセーフモードで動いています。

サーバー運営会社からはセーフモードは解除しない方が良いとすすめられているため、できればhttp.confでディレクトリを指定して解除したいです。

サーバーのサポートに問い合わせいろいろと試したのですが、

/var/www/vhosts/example.jp/conf/以下にvhost.conf

を作成し、以下のコードを記述するように指示されました。

<Directory /var/www/vhosts/example.jp/httpdocs/>

<IfModule sapi_apache2.c>

php_admin_value open_basedir /var/www/vhosts/example.jp

php_admin_value safe_mode_exec_dir /var/www/vhosts/example.jp/

</IfModule>

</Directory>

再起動後、open_basedirとsafe_mode_exec_dirが指定した値になっていることをphpinfo();で確認したのですが、サブドメインからメインへはアクセスできませんでした。

この記述が間違っている気がするのですが、いまいち理解できていません。何かわかりますでしょうか?


2 ● t_shiono
●23ポイント

サーバの情報を整理させてください。

Apacheの設定

/etc/httpd.conf

※内部でメイン用設定ファイル(/var/www/vhosts/example.jp/conf/vhost.conf)をインクルード

※内部でサブ1用設定ファイル(/var/www/vhosts/example.jp/conf/aaa.conf)をインクルード

※内部でサブ2用設定ファイル(/var/www/vhosts/example.jp/conf/bbb.conf)をインクルード

という仮定でよいでしょうか?

こうでない場合は、aaa.example.jpやbbb.example.jpのVirtualHost設定がどこに記述されているかを教えてください。

この仮定ですと、

メインの設定は、提示してもらったvhosts.confにより、/var/www/vhosts/example.jp/以下のファイルにアクセスが可能です。

しかしながら、推測になりますが、サブ側の設定ではvhosts.confの内容は影響していないため、デフォルトのセーフモードの設定が反映されているのではないでしょうか?

そのため、以下の点を確認していただけます?

1.www.example.com以下のページでphpinfoの表示とaaa.example.com以下のページでphpinfoの表示との違いがないか確認

2.1で違いがああれば、最初の設定でいうaaa.confに相当するファイルを修正する

いかがでしょうか?

◎質問者からの返答

サブドメインのvhost.confにあたるものは見当たりませんでした。

/var/www/vhosts/example.jp/conf/httpd.include

上記のhttpd.include内にサブドメインの設定情報が記載されていました。

以下のように、メインからサブへ順に記載されています。vhost.confはメインの時のみインクルードしているようです。

<VirtualHost 000.000.000.000:80>

ServerName example.jp:80

Include /var/www/vhosts/example.jp/conf/vhost.conf

</VirtualHost>

<VirtualHost 000.000.000.000:80>

ServerName aaa.example.jp:80

</VirtualHost>

<VirtualHost 000.000.000.000:80>

ServerName bbb.example.jp:80

</VirtualHost>

1.の表示の違いですが、違いがあり、サブドメインはデフォルトの状態のままでした。

おそらくサブドメインの設定部分でvhost.confをインクルードすれば良いのだと思いますが、やはりhttpd.includeを直接編集しなければいけないのでしょうか?


3 ● t_shiono
●22ポイント

サーバの状況が分かりました。

この状態であれば、

php.ini または、http.include のどちらかを修正する必要があります。

ただ、後者の場合はPleskから何かを設定すると、上書きされて再度、修正が必要となってしまうので、次のURLを参考にするとよいかもです。

https://jpy.swsoft.com/manuals/Plesk7.5Reloaded_AdminGuide_Japan...

◎質問者からの返答

なるほど。

となると、以下のようにサブドメインそれぞれのvhost.confを作成し有効化していくということでしょうか?

<VirtualHost 000.000.000.000:80>

ServerName example.jp:80

Include /var/www/vhosts/example.jp/conf/vhost.conf

</VirtualHost>

<VirtualHost 000.000.000.000:80>

ServerName aaa.example.jp:80

Include /var/www/vhosts/example.jp/subdomains/aaa/conf/vhost.conf

</VirtualHost>

<VirtualHost 000.000.000.000:80>

ServerName bbb.example.jp:80

Include /var/www/vhosts/example.jp/subdomains/bbb/conf/vhost.conf

</VirtualHost>

数百個サブドメインを設定するので、何か一括で指定できる方法があれば良いのですが、やはり地道にやっていくしか無理でしょうか?


4 ● t_shiono
●22ポイント

どれもオススメできる方法ではないですが、

・Pleskをハックして、デフォルトで生成するhttpd.includeに適切なopen_basedirが含まれるようにする

・/tmp(恐らくopen_basedirに含まれていると思います)以下にSmarty関連のファイルを置く。ただし、/tmp以下は自動削除される可能性があるので、それにも対応しておく。

という方法は存在するには存在すると思います。


ただ、サーバの設定ということなので、一度設定後はそんなに頻繁に発生しないことだと思うので、各ドメインのvhots.confを自動生成するようなスクリプトを書くというのが、一番よいような気がします。

vhost.confファイルが存在すれば、httpd.includeへのIncludeディレクティブの追加はPleskがやってくれるようなので。

◎質問者からの返答

なるほど。

やはりひとつひとつ設定する方が安全そうですね。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ