2017-05-22 8 views
0

には/ var/WWWのうち、別のディレクトリにPHPでファイルをコピーすることはできません。しかし、私は文法的ではない問題を抱えています。ファイルをコピーして変更できるようにchmodコマンドを実行したことを知っている!!ここ は私のコードです:私は私がPHPでファイルをコピーしたい私のapache2のWebサーバー

このコードは動作しません!

<?php 
    $file = 'example.txt'; 
    $newdir = '/home/Dell/Desktop'; 
    $newfile = 'example.txt.bak'; 

    echo "Trying to copy $file...<br><br> "; 

    echo' loading .... <br>'; 
    echo' loading .... <br>'; 

    if (!copy($file, $newdir.'example.txt.bak')) { 
     echo "failed to copy $file...\n"; 
    } 
    else { 
     echo' the file should be in'. $newdir; 
    } 


    //this code is working cause I have changed the location to /var/www/ directory!!! 

    $file = 'example.txt'; 
    $newdir = '/var/www/'; 
    $newfile = 'example.txt.bak'; 

    echo "Trying to copy $file...<br><br> "; 

    echo' loading .... <br>'; 
    echo' loading .... <br>'; 

    if (!copy($file, $newdir.'example.txt.bak')) { 
     echo "failed to copy $file...\n"; 
    } 
    else { 
     echo' the file should be in'. $newdir; 
    } 
?> 

私が試してみました:

move_uploaded_file() 
copy() 
rename() 

、何も!!動作します。ここで助けてください。

+1

何を実行することで(再び、あなたのケースでは、それは/home/Dell/Desktopだろう)を再帰的にsudo chown :www-data /home/Dell/Desktop -R

  • chmodのターゲットディレクトリを実行することで、あなたはApacheを使っていますか?あなたが 'someuser'でApacheを走らせているようで、彼らは別のユーザのホームディレクトリに書き込む許可を持っていないようです。 – Matt

  • +0

    私はDellという名前のユーザーは1人しかいません。また、私はターミナルとそれをコピーすることができますコピー。私のApacheは同じファイルをWWWにコピーしていますが、それから何もできません。 – Moaibed

    答えて

    0

    これはPHPではなく、Apacheです。あなたのApacheユーザーは与えられたディレクトリに書き込むためのアクセス権を持っていません。

    1. awk -F= '$1 == "export APACHE_RUN_GROUP" {print $2}' /etc/apache2/envvarsを実行して、Apacheグループを探す:

      はここソリューションです。 ubuntuでApache2を使用している場合、デフォルトのユーザとグループはwww-dataになります。

    2. chownを再帰的にターゲットディレクトリ(あなたのケースでは、それは/home/Dell/Desktopだろう)sudo chown :www-data /home/Dell/Desktop && sudo chmod 775 /home/Dell/Desktop && sudo find /home/Dell/Desktop -type d -exec chmod 775 {} \; && sudo find /home/Dell/Desktop -type f -exec chmod 664 {} \;
    関連する問題