2

私の機能では、コンテンツの作成と新しいディレクトリへのコピーに問題があります(これがこれを行うための最良の方法であるかどうかもわからないため、別の提案を歓迎します)。

次のように2つのネットワークドライブをマウントしています/etc/fstab

//128.251.108.xxx/Data/Agilent_Data /home/lv_admin/uslonsnas001 cifs cred=/etc/.na02passwd,rw,umask=0000,uid=www-data,gid=webgroup 0 0
//128.251.108.xx/c$/Agilent /home/lv_admin/uslonsapp003 cifs cred=/etc/.na02passwd,rw,umask=0000,uid=www-data,gid=webgroup 0 0

基本的に、uslonsapp003マウントからのファイル パスでプロンプトが表示されたら、ディレクトリ構造が存在するかどうかを確認し、存在しuslonsnas001ない場合は再帰的なディレクトリを作成します。uslonsapp003次に、コンテンツを の新しい構造の場所にコピーしuslonsnas001ます。これが私のコードです:

$pImagePath = "http://uslonsapp003:8080/boardtests/2011/4/29/12/30/8051/Images/E_1-c274.jpg";
//strip off the path name up to '2011' and take off the image name at the end
    $startpos = strpos( $pImagePath, "/boardtests/" ) + strlen( "/boardtests/" );
    $endpos   = strpos( $pImagePath, "/Images/" );
    $file_dir = substr( $pImagePath, $startpos, ( $endpos - $startpos ) );
    $orig_dir = "/home/lv_admin/uslonsapp003/ITFSS/DataStore/BoardTest/" . $file_dir;
    $new_dir  = "/home/lv_admin/uslonsnas001/BoardTest/" . $file_dir;
    if( !is_dir( $new_dir ) )
        if( !shell_exec("mkdir -p $new_dir") )    return array( "status" => 0, "errordesc" => "failed to make dir: '" . $new_dir . "'" );
    if( !shell_exec("cp -r $orig_dir $new_dir") ) return array( "status" => 0, "errordesc" => "failed to copy from: '" . $orig_dir . "' to: '" . $new_dir . "'" );
    return array( "status" => 1 );

「ディレクトリの作成に失敗しました...」と「コピーに失敗しました...」の両方のエラーが発生しました

これはApacheを介して実行されます。これはパーミッションの問題だと思いますが、それは私の「勘」です。助けてください!

shell_exec() の先頭に追加しようとしましsudoたが、それでも機能しません。

更新1

/home/lv_admin/uslonsnas001ディレクトリを作成したときに、そのディレクトリのmod、所有者、およびグループを、それを使用するもの(www-data)に変更しなかったため、mkdirが失敗していることがわかりました。以下を実行すると、その部分が修正されました。

$ sudo chmod 775 ~/uslonsnas001
$ sudo chown www-data ~/uslonsnas001
$ sudo chgrp webgroup ~/uslonsnas001

しかし、私はまだコピー コマンドに問題があり、「モジュール 'ODBC' は既に読み込まれています」と言っています。

4

2 に答える 2

0

使用する :

mkdir("path/to/your/directory", 0777, true);

ここで、0777 は chmod で、bool true は再帰モードを有効にします

于 2011-06-23T12:42:35.367 に答える
0

残念ながら、問題は単純でした。元のマウント ポイントは、ルートの書き込み権限で設定されていませんでした。マウントポイントの所有者とグループをルートに変更すると、機能します。

于 2011-08-17T19:52:37.083 に答える