1

さて、私はすべてを試しました、これは見た目がはるかに良い場所です、私はここでドキュメントルートを作りたいですhttpdocs/[folder]/htmlそして私はルートの上に行きたいが(require '../[folder]/file.php']それ以上アクセスできないファイルをphpに含めています/var/www/vhosts/example.com/httpdocsopen_basedir値がまだ残っているためhttpdocs/[folder]/htmlに制限されていることはわかっていますがphpinfo()、私の人生の間、そのローカル値を変更することはできません!

これは私がこれまでに試したことです:私はこれを見ました-ドキュメントルートの外にファイルをインクルードする方法は?-そして、confディレクトリにある「vhost.conf」を作成し、ファイルを再構成し、apacheを再起動しました...何もありません。良い投稿ですが、少し古くなっているようです。

php.ini自体を編集してopen_basedir = '/var/www/vhosts/example.com/httpdocs、元の場所にアップロードし、再構成し、再起動しました-何もありません

'httpd.conf'を取り出して、他のconfファイル(vhost.conf)から同じ行を追加して編集し、元に戻しました-何もしませんでした。次に、godaddyがここで言うことを実行しようとしました-http ://help。 godaddy.com/article/1616と行を追加しましたphp_admin_value open_basedir none' to 'httpd.conf-どちらも運がありません。

今は0435で、ほとんど目を開けていません。このサイトは明日2000年に立ち上げられる予定です。読んだり助けたりする意欲のある/できる人に事前に感謝します。

更新:迅速な対応に感謝します。これが私があなたに与えることができる最良の答えです:

エラーが発生しますか?

はい、サーバーエラーが発生し、サーバーエラーログを介して、具体的には次のようになります。

PHP警告:require()[function.require]:open_basedir制限が有効です。ファイル(/var/www/vhosts/[example.com]/httpdocs/[folder]/[安全なphpファイルが存在するフォルダー]/ [file.php])が許可されたパス内にありません:

したがって、open_basedirの制限により、99.99%の確信があります。

Webサーバーがvhosts/の所有者として設定されていることを確認しますか?

私はかなり確信しています、私はサーバーの制御に少し慣れていません、そしてそれが正確に何を意味するのか本当にわかりませんが、Parallels Plesk v10.3.1を実行しているGodaddyを介して仮想専用サーバーを持っています、私は上記のファイルを移動しましたシェルSSH。

Pleskでは、「ドキュメントルート」を以下/var/www/vhosts/example.comの任意の値に変更でき、Pleskは「open_basedir」を設定した値に変更します。たとえば、Pleskでドキュメントルートを「httpdocs」に設定すると、「open_basedir」が同じフォルダに変更され、すべてが正常に機能します。問題は、私がすべてのものにパブリックアクセスしたくないということです/httpdocs/[folder]

私の目標は、「documentroot」を/httpdocs/[folder]/html「open_basedir 」に変更したいのですが、何らかの理由/httpdocsでそのローカル値を変更できません。open_basedirセキュリティの目的でこれを実行して、重要でないphpファイルにのみ直接アクセスできるようにしますが、php自体はフォルダーへのアクセスを増やしたいと考えています。

相対パスまたは絶対パスの使用を含めようとしていますか?

'documentroot'より上のファイルにインクルード/リクワイアしようとしているphpファイルのパスは次の形式とまったく同じです。

require '../[folder where secure php files exist]/file.php';

私があなたを正しく理解しているなら、私はサーバーのパス全体を使用していません。

4

1 に答える 1

0

答え:(これは答えに変更されました):

どうやら、Plesk 10では、Pleskのプログラムは「ドキュメントルート」パスを「open_basedir」に設定しますが、Plesk10で「open_basedir」を変更するユーザーフレンドリーな方法はありません!!!

したがって、代わりにそれは少しハックです、あなたは最初にここに行かなければなりません:

/usr/local/psa/admin/conf/templates/default/service/php.php

次に、ファイル内のこれらの行の両方を変更します(11行目と29行目)。 echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";

これに: echo "php_admin_value open_basedir /var/www/vhosts/[your.domain]/httpdocs/:/tmp/\n";

または、制限を停止したい場所に。

次に、これらの行がSSHであることを確認します。

/ usr / local / psa / admin / sbin / httpdmng --reconfigure-all

/etc/init.d/httpd stop

/etc/init.d/httpd start

しかし、私は今、新しい問題を抱えています。「ドキュメントルート」は正しいフォルダを指しています。

/ var / www / vhosts / [my.domain] / httpdocs / [folder] / html

ただし、サーバーが次の場所に到達すると、エラーは発生しません。 require '../[folder]/[file.php]';

そこにさえないようにそれをスキップします!エラーメッセージなどを表示しません。また、埋め込まれたcssファイル、jsファイル、画像、ビデオをすべてスキップします...どのディレクトリにも移動しません!「php.ini」の設定か、Pleskが行っている奇妙なことだと感じています。

解決済み:最後の問題は、ルートより上のファイルにアクセスする作業を行ったことがないためです。PHPはルートの上に移動できますが、これを行うことはできません。 src="../img/imagefile.jpg"

HTMLで。

したがって、すべてのサイトファイルを再構築した後、私のWebサイトが稼働しています。助けてくれたすべてのおかげで、うまくいけば、誰かが再びそれをする必要はありません。また、これは大きな問題であるため、Pleskがこれを更新している投稿を見ました。Parallelsで働いている人は、 http://forum.parallels.com/showthread.php? t=113236これは次のバージョンのオプションになるので、それまではハックタイムだと言いました。

于 2011-12-18T19:52:22.190 に答える