2

マップされたネットワーク ドライブにファイルをアップロードするための php スクリプトが機能していません。以下はphpスクリプトです。

$newfilename = "something.wav";
$path  = 'Y:\\uploaded\\'.$newfilename;
copy($_FILES['ufile']['tmp_name'], $path);

また、ネットワーク ドライブ フォルダーのアクセス許可も確認しました。アップロード フォルダー内のネットワーク ドライブ (10.4.4.32) d ドライブに Y ドライブがマップされています。完全な制御権限があります。ネットワークドライブの次のパスを試しました:

  • Y:\アップロード済み\
  • \\10.4.4.32\d$\アップロード済み\
  • move_uploaded_file($_FILES['ufile']['tmp_name'], $path);

しかし、それは次のようなローカルドライブで動作します:

  • d:\uploaded\ ファイルはローカル ドライブにアップロードされましたが、ネットワーク ドライブにアップロードできませんでした。アプリケーションにphp 5.3とIIS 7を使用しました

表示されるエラー: 警告: copy(\10.4.4.32\d$\uploaded\test.wav): ストリームを開くことができませんでした: C:\inetpub\wwwroot\myapp\upload.php 行 107 で許可が拒否されました

EVERYONE ユーザーに対して、アップロードされたフォルダーのプロパティでフル コントロールのアクセス許可を許可しています。他の許可はありますか、修正する必要があります。

4

2 に答える 2

0

まず、copy()false を返すかどうかを確認します。これは、実際にエラーがあることを示しています。

次に、track_errorsphp.ini でディレクティブを有効display_errorserror_reportingし、最高レベルまで有効にします。がアクティブ化されたらtrack_errors(そして Web サーバーを再起動したら)、コピーの後に次の行を使用します。

var_dump($php_errormsg, error_get_last());

これにより、問題に関するより良いヒントが得られるはずです。


また、safe_modeおよびを使用している場合open_basedirは、移動先のパスが許可されていることを確認してください。

于 2012-06-15T05:38:02.773 に答える
0

ネットワーク ドライブは apache でも php でも機能しない可能性があるため、この $path = "\\machine-name\share_path\"; を使用します。

user などの両方のコンピューターでユーザーアカウントを設定します: ApacheUser

サービスに移動して Apache をクリックし、作成したばかりのアカウントを使用して、ソース コンピューターの Apache サービスにログオンします (2 番目のタブ)。

Apache サービスを再起動します

その後、今すぐ動作するはずです

于 2013-09-15T12:16:30.943 に答える