3

PHPでpublic_htmlの外にファイルを作成しようとしています:

fopen("/home/sites/foo.org/backup-ticketing/asu.sql";w)

ただし、このエラーメッセージが表示されます。私はそれを理解できないだけで、どうにかしてそれを行うことができるはずだと確信しています。フォルダのパーミッションは です711

[2012 年 8 月 1 日水曜日 14:33:54] [エラー] [クライアント 84.3.2.16] PHP 警告: fopen(/home/sites/foo.org/backup-ticketing/asu.sql) [function.fopen]: に失敗しましたストリームを開く: 4 行目の /home/sites/foo.org/public_html/back/asu.php で許可されていない操作

どうするのが正解なのか教えてください。

多くのアドバイスをありがとうございました。追加情報があります。

php.ini は public_html の問題ですが、そのままにしておきたいのですが、 /back/ フォルダーでできるはずです。

ここに私の設定があります:

 file_uploads = Off
 upload_tmp_dir = /var/php_tmp
 upload_max_filesize = 0M
 allow_url_fopen = Off
 allow_url_include = Off
 safe_mode = Off 
 display_errors = off
 magic_quotes_gpc = off
 magic_quotes_runtime =    off
 max_file_uploads=0 
 disable_functions=passthru,exec,phpinfo
 open_basedir  = /home/sites/foo.org/public_html/ 
4

3 に答える 3

3

PHPSafe modeまたはopen_basedirが有効になっているため、やりたいことを妨げているようです-許可されていないため、不可能です。

公開ディレクトリの外にある他のディレクトリへの書き込みが許可されているかどうか、頻繁に、../tmpまたは../tempそこにあり、書き込み可能かどうかを確認できます。

open_basedir で許可されているパスを見つけることができる場合があります

echo ini_get('open_basedir');

問題を回避する別の方法: ファイルを公開ディレクトリのサブディレクトリに置き、.htaccess で保護します (ユーザー/パスワード、自分以外のすべての IP を拒否するなど)。

編集:

  • htaccessを介してユーザー名/パスワードでディレクトリを保護する: htaccess ジェネレーターを使用する、または
  • 特定の IP からのみアクセスを許可する: ファイルを作成し、以下の内容で .htaccess という名前を付けます。

    order deny,allow

    deny from all

    allow from 888.888.888.888

于 2012-08-01T14:37:18.510 に答える
0

調査の後、私は明白な答えを見つけました: open_basedir = none in php.ini 誰かが役に立つと思います.

すべての回答に感謝し、私は彼らから多くのことを学びました.

于 2012-08-01T19:53:00.177 に答える
0

shell_exec を試すことができます。

そこで、Webサーバーユーザーとは異なるユーザーでスクリプトを実行できます

http://php.net/manual/de/function.shell-exec.php

于 2012-08-01T14:38:14.097 に答える