2009-04-14 10 views
0

アップロードされたファイルをPHPでmove_uploaded_file()経由で保存した場合、絶対URLは使用できません。相対URLを使用する必要があります。私のサイトには、それぞれhttpdocsとhttpsdocsの2つのルートディレクトリがあります。httpdocsとhttpsdocsです。私のスクリプトがhttps側にある場合、どのようにhttp側の場所にファイルを保存できますか?PHP:PHPでファイルを別のルートディレクトリに保存していますか?

ありがとうございます!

UPDATE私がこのようにそれをやっている私は間違って絶対パスの規則を使用していますように思えるので OK:あなたは絶対パスを使用できない場合

$dir = 'https://www.mydomain.com/masonic_images/'; 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 
+0

絶対パスを使用できないのはなぜですか? –

+0

@Chad絶対パスを使用するとエラーが発生します。 "警告:move_uploaded_file():サーバーの設定でURLファイルアクセスが無効になっています。" .htaccessファイルで調整できるものですか? –

+0

move_uploaded_file呼び出しを表示できますか?あなたがファイルパスの代わりにURLを入れているように思えますが、それはうまくいかないでしょう。 –

答えて

1

httpdocsとhttpsdocsの両方のディレクトリが同じ親フォルダにありますか?その場合は、move_uploaded_fileの2番目のパラメータに相対パスを使用して、ファイルを別のルートディレクトリに配置します。例えば

このコードは、アップロードスクリプトはhttpsdocsのルートディレクトリに配置されていることを前提としていて、あなたはをhttpdocsディレクトリにファイルを保存すること。

+0

ありがとうございました。私はあなたが言ったことを試しましたが、私はこのエラーを受け取りました: "警告:move_uploaded_file():open_basedirの制限。File(../../ httpdocs/masonic_images/41_red_391-1-l.jpg)は許可されたパス " –

+1

あなたのWebサーバーは、現在のサイトルート外のすべてのファイルアクセスをブロックするようにPHPを構成しています。 open_basedirの制限を解除できない限り、イメージを別のディレクトリに置く方法はありません。 –

+0

@ジョンは.htaccessでそれを行う方法がありますか?おかげで –

2

はあなたが何を知っていないので、絶対パスは、それが何であるか把握し、それを使用するためにPHPのrealpath()を使用してください。

5

move_uploaded_file()いずれのパラメータのURLも受け入れません。宛先はファイルシステム上の絶対パスです。

<?php 
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 

as @apphackerが推奨されます。 realpath(__FILE__)を使用して、ファイルへの絶対パスを判断することができます。

+0

絶対パスを正しく書き込むにはどうしたらいいですか? –

+0

例を更新しました。絶対パスは "/"で始まります。 URLには「[protocol]://」があります。 – matpie

+0

ありがとう、私はあなたに1 +あなたの助けを贈りました! –

1

httpdocsの中にアップロードされたファイルを置くので、phpファイルをアップロードして任意のコードを実行することができます。

+0

アドバイスをいただき、ありがとうございます。これは従業員が製品イメージをアップロードするためのものですが、ユーザーはこれを使用していません。 –

関連する問題