Apache 設定にセクションがあります
エイリアス /test "/var/www/web2/test"
<ディレクトリ "/var/www/web2/test">
オプション FollowSymLinks インデックス MultiViews
AllowOverride なし
順序allowed,den y
すべてから許可
この時点で /var/www/web2/test ディレクトリに php ダウンロード ページがある場合、
down.php は次のようになります:
$filename=$_GET["file"]; ob_end_clean();header("Expires: 0");if(!$file = @fopen($filename,'r')){ echo 'read error'; exit();} flock($file,LOCK_SH);$filesize=filesize($filename); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".$filesize);Header("Content-Disposition: attachment; filename=" . $file_name);if($filesize>0){ echo fread($file,$filesize);}fclose($file);ob_get_contents();ob_end_clean();exit;
サーバー権限!
suPHP をセットアップして、別のユーザーの権限で PHP を実行するだけです
if(preg_match('#../#',$filename)){
exit
}
Apache 自体にはこの機能はありません。また、それも必要ありません
Apache は単なるセッターであるため、この関数は必要ありません
php.ini で open_basedir = アクセスを許可されるパスのリストを設定できます
Apache の httpd.conf または .htaccess に open_basedir を置くこともできます
php_admin_value open_basedir allowed アクセスされるパスのリスト
Apache は単なるセッターであるため
php.ini で open_basedir = アクセスを許可されるパスのリスト を設定できます
open_basedir を Apache の httpd.conf または .htaccess に置くこともできます
php_admin_value open_basedir を使用すると、パスのリストにアクセスできます
……
いいですね