Nasıl bir PHP web sunucusuna yüklenen dosyaları sahibi apache etrafında alabilirim?

0 Cevap php

Ben co-öğretim olduğum bir ders için notlar ve belgeler için bir Linux web sunucusu üzerinde bir PHP web uygulaması üzerinde çalışıyorum. Ben şu anda yazıyorum sayfası Öğrenci açılan menüden bir atama seçer ve sonra atama ve gönderimleri yüklenenler göndererek atamaları içindir. Teslim üzerine, teslim ile ilgili tüm bilgilerin MySQL tabloya gider ve dosya dosya sisteminde kalıcı bir yere taşınır. İdeal olarak, bu son derece atama, öğrenci ve sürüm tarafından organize şey olurdu, ama şu anda tüm istediğim prensipte çalışan dosya yükleme almak için, şimdi için sadece dizine şeyler gönderir ~ / phptest / (izinler için hangi Ben sadece testler için 777 denedim, ve bu da işe yaramadı gerçi), 755 ayarlanır. Şimdi olduğu gibi burada kodu:

($ Dbh ben temizleyici bu özel DB işlemleri yapmak için oluşturulan genişletilmiş DB sap sınıfının bir örneğidir)


if(isset($_POST['submit'])) {
    $assignmentID = $_POST['assID'];
    $tmp = "/home/username/phptest/"; 
    $info = pathinfo($_FILES['file']['name']);
    $filename = $info['basename'];
    $ext = $info['extension'];
    if(1) { //strcmpall($ext,array('tar.gz','zip'))) {
        if($_FILES['file']['size'] < 1000000) {
            $path = $tmp . $filename;
            if(move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
                $versionQuery = $dbh->select(array('version'),array('a01_submissions'),array("studentID='$studentID'","assignmentID='$assignmentID'"));
                if(count($versionQuery)) {
                    $versionArray = $dbh->colToArray($versionQuery,'version');
                    $version = max($versionArray)+1;
                }
                else $version = 1;
                echo "Version $version.\n";
                $week = $dbh->getOne('week','a01_assignments','id',$assignmentID);
                $dbh->insert("a01_submissions",array('studentID','assignmentID','version','filePath'),array($studentID,$assignmentID,$version,addslashes($newpath)));
                echo "File $filename sucessfully uploaded and stored at $newpath.\n";
            }
            else echo $moved . "
\n"; } else die("File cannot exceed 1MB"); } else die("Bad file extension."); } else { // HTML to display the submission screen }

Benim sorunum olsa, move_uploaded_file sadece 777 izinlerine sahip dizinleri için çalışıyor olmasıdır. Yakından bakıldığında PHP kullanıcı 'apache' gibi şeyler yükleme ve bu nedenle ow ile İsmimin ait dizinlere yazamıyor, çünkü bu olduğunu ortaya koymaktadır. Ben dosyaları kurtarmak için chown kullanarak önerilen PHP dokümanlar kullanıcılar tarafından yayınlanmıştır çözümler gördüm, ama ben bunu yapmak için yeterince yüksek bir izin düzeyine sahip değilsiniz. Kullanıcı adım daha izinleri almaya çalışırken içerir gelmez bu sorun için zarif bir çözüm var mı?

0 Cevap