タイトルにあるように、すべてのドメインのPleskでopen_basedirへのパスを追加するにはどうすればよいですか?
すべてのドメインのopen_basedir値を次のように変更する必要があります。
{DOCROOT}/:/tmp/
に:
{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/
どこでそれを行うべきかはわかっていますが、{DOCROOT}の親の変数が何であるかはわかりません。
タイトルにあるように、すべてのドメインのPleskでopen_basedirへのパスを追加するにはどうすればよいですか?
すべてのドメインのopen_basedir値を次のように変更する必要があります。
{DOCROOT}/:/tmp/
に:
{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/
どこでそれを行うべきかはわかっていますが、{DOCROOT}の親の変数が何であるかはわかりません。
Plesk 10.3についてはわかりませんが、Plesk 10.4には、/ var / www / vhosts /%domain-name%/に公開されている{WEBSPACEROOT}があります。したがって、サービスプランのPHP設定で「{DOCROOT} /:/ tmp/」を「{WEBSPACEROOT}/:/tmp/」に置き換える必要があります。
また、これはPlesk11.0のデフォルト設定です。
Plesk 10.0の場合、phpがApacheモジュールとして機能する場合:
mkdir /usr/local/psa/admin/conf/templates/custom/service/
cp /usr/local/psa/admin/conf/templates/default/service/php.php /usr/local/psa/admin/conf/templates/custom/service/
/usr/local/psa/admin/conf/templates/custom/service/php.phpで文字列を置き換えます
echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";
に
echo "php_admin_value open_basedir " . str_replace('/httpdocs', '', $OPT['dir']) . "/:/tmp/\n";
実行します:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all # to apply new configuration for all domains
しかし、CGIとFastCGIの場合、/ var / www / vhosts / domain-name / etc / php.iniファイルを変更する必要があり、それをどのように処理するかわかりません。
plesk 11でphp.phpテンプレート用のOlegのソリューションを使用し、次のコードを変更しました。
echo $OPT['settings'];
に
echo str_replace(':/tmp/', ':/tmp/:/php/includes/', $OPT['settings']);
これは、必要以上に多くのオプションを置き換えることができるため、あまり堅牢なソリューションではありませんが、一般的なケースでは機能します(open_basedirオプションに/ php / include /ディレクトリを追加します)。通常、これらの変更はpleskサービスプランの修正によって行われる可能性がありますが、カスタムサービスプランを使用するドメインが多すぎる場合は、すべてのドメイン設定を変更するのが面倒になる可能性があります。