現在、cPanel共有ホスティングでシンプルなマルチテナンシーサービスをホストしています。ここでは、サインアップした顧客にサブドメイン、ディレクトリ、およびデータベースが動的に割り当てられます(XMLAPIを使用)。
顧客Aサブドメインディレクトリ7:/ home/xxx/public_html/customers/custA /(http://custA.abc.com
)、
カスタマーBサブドメインディレクトリ:/ home/xxx/public_html/customers/custB /(http://custB.abc.com
)など.
すべての顧客にはシステムファイルの同じコピーが提供されます(それぞれの構成ファイルを除く)。そのため、顧客のサブドメインディレクトリから/ home/xxx/mainfiles /へのシンボリックリンクを作成しました。
ただし、次のようにPHP警告で迎えられました。
[17-Dec-2014 07:28:39 Europe/London] PHP Warning: Unknown: open_basedir restriction in effect. File(/home/xxx/mainfiles/index.php) is not within the allowed path(s): (/home/xxx/public_html/customers/custA:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp) in Unknown on line 0
[17-Dec-2014 07:28:39 Europe/London] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[17-Dec-2014 07:28:39 Europe/London] PHP Fatal error: Unknown: Failed opening required '/home/xxx/public_html/customers/custA/index.php' (include_path='.:/opt/alt/php54/usr/share/pear:/opt/alt/php54/usr/share/php') in Unknown on line 0
したがって、新しい顧客がサインアップするたびにWebホスティング会社を呼び出して、新しい顧客のサブドメイン/ディレクトリのこの特定のopen_basedirパラメーターをオフにする必要があります。
ホスティング会社から、open_basedirパラメーターはサブドメイン/ディレクトリごとに設定されていますが、ディレクトリパス(つまり/ home/xxx/mainfiles)ごとに設定できないと言われました。
これを行うより良い方法はありますか? .htaccessまたは何かを使用するような...
私の目的は:
私の意見では、これはホスティング会社の問題のようです。誰を使用していますか? php.iniファイルを全面的に変更できるか、少なくともこのオプションが設定されているユーザーを見つけて、毎回エラーが発生しないようにする必要があります。ちょっとした考え。
。htaccessファイルにopen_basedirを設定すると、PHPスクリプトディレクトリへのアクセスが完全に制限されますか? PHPにopen_basedir
を設定する方法は次のとおりです。あなたの。htaccessファイル:
php_flag open_basedir "/var/www/vhosts/mydomain.com/php_can_only_access_files_in_this_directory/"