16

私はあなたの標準的なチェックを行いました(そこにあるディレクトリであり、十分に緩い許可が設定されています)、そして私はあなたの標準的な愚かな人間のトリックをカバーしたと確信しています。失敗しているコードは次のとおりです。

move_uploaded_file($_FILES['image1']['tmp_name'], "/public_html/flashsale/assets/img/products/T".$_FILES['image1']['name']);

ディレクトリはそこにあります-私はFileZillaからパスをコピーしました。FileZillaとHostGatorコントロールパネルのファイルマネージャーの両方で、アクセス許可を777に設定しました。このコードは2つの警告を生成します:

メッセージ:move_uploaded_file(/public_html/flashsale/assets/img/products/Tsirloin.jpg)[function.move-uploaded-file]:ストリームを開くことができませんでした:そのようなファイルまたはディレクトリはありません

メッセージ:move_uploaded_file()[function.move-uploaded-file]:'/tmp/phpI5GZ3S'を'/public_html/flashsale/assets/img/products/Tsirloin.jpg'に移動できません

その順番で。したがって、ファイルがアップロードされ、ディレクトリが存在し、777に設定されていますが、他に何が欠けている可能性がありますか?

4

5 に答える 5

19

ディレクトリ全体をファイルに配置する必要はありません。/public_html/flashsale/リンクから削除して、それが機能するかどうかを確認してください。さらに、ファイルには777のアクセス許可は必要ありません。私自身、755のアクセス許可を持つフォルダーにファイルをアップロードします。

getcwd();また、目的のディレクトリで使用できます。この関数は、ファイルの移動に使用する必要のあるディレクトリを提供します。ソース

于 2013-01-30T04:45:32.820 に答える
11

問題

$dirpath = dirname(getcwd())

これは、/public_html/upload フォルダーへのディレクトリ パスを取得するために最初に使用したものです。$dirpath が含まれます

/public_html/upload

ソリューション(サーバー上)

$dirpath = realpath(dirname(getcwd()))

私は共有ホスティング環境にいるので、 move_uploaded_file を機能させる正しい方法は、これを宛先として使用することです: realpath(dirname(getcwd())) は次のようなものを返します:

/home/cpanelusername/public_html/upload
于 2015-11-22T09:52:29.040 に答える
2

あなたが横断しているパスを確認してください。public_html は不要です

$image=basename($_FILES['file']['name']);
$image=str_replace(' ','|',$image);

$tmppath="images/".$image;

        if(move_uploaded_file($_FILES['file']['tmp_name'],$tmppath))
        {
         echo "success";
        }
        else
        {
         echo "fail";
        }

お役に立てれば

于 2013-01-30T04:58:46.250 に答える
0

Windows および ISS のソリューション:

IUSR アカウントには、宛先ディレクトリでのアクセス許可が必要でした。ISS_IUSR アカウントではなく、IUSR アカウントだけです。

于 2016-06-28T14:54:32.233 に答える