• 21-03-2009, 12:08:18
    #1
    Merhaba, hazır bir script kullanıyorum. Siteyi taşımadan önce problem yoktu ancak cpanelden directadmine taşıdıktan sonra UID GID problemleri çıktı. Çoğunu directadmin panelinden hallettik fakat bir sorun var. Script normalde üye kayıt olurken resim video muziklerini upload edebilmesi için ona özel klasör oluşturuyor. Burada problem yok, oluşturuyor ancak apache GID ile oluşturuyor. Halbuki host için açılan hesabın adına(örneğin host için domain google ise google GID oluyor) bu GID yi vermesi gerekiyor.

    Directadmindenmi kaynaklanıyor bilmiyorum. Normalde directadminden bu GID yi halledebiliyorum fakat her üye olan için tek tek yapmam mümkün değil. Mkdir fonksiyonunda acaba GID tanımlayabilirmiyim onuda bilmiyorum, araştırdım fakat bulamadım.

    yardımcı olan olursa sevinirim, teşekkürler.
  • 21-03-2009, 17:07:33
    #2
    Üyeliği durduruldu
    sorunun direkt admin ile ilgisi yok. php modül olarak kurulmuşsa yani cgi olarak kurulmadıysa ve sistemde suphp kurulu degilse otomatik olarak apache nin conf dosyasında tanımlı olan kullanıcısını kullanır.


    oluşturduğunuz dosyaların yetkilerini php nin chmod fonksiyonu ile

    PHP: chmod - Manual

    yada sahipligini (sahipliğini değiştirdiginiz durumda apache nin kullanıcısınında erişebilecegi şekilde olması gerek yoksa kendi oluşturduğunuz dosyalara erişememez duruma düşersiniz) değiştirerekte işlem yapabilirsiniz.

    PHP: chgrp - Manual
    PHP: chown - Manual

    bunların içinde kendim şahsen chmod yaklaşımını kullanıyorum.
  • 21-03-2009, 18:51:25
    #3
    Cevabınız için teşekkürler, acaba aşağıdaki kodlara nasıl uygulayabilirim ?
    UID ve GID yi örneğin "support" diye tanımlamak istiyorum klasörü açarken..

          // ADD USER DIRECTORY
          $user_directory = $url->url_userdir($this->user_info['user_id']);
          $user_path_array = explode("/", $user_directory);
          array_pop($user_path_array);
          array_pop($user_path_array);
          $subdir = implode("/", $user_path_array)."/";
          if( !is_dir($subdir) )
        { 
            mkdir($subdir, 0777); 
            chmod($subdir, 0777); 
            $handle = fopen($subdir."index.php", 'x+');
            fclose($handle);
          }
        if( !is_dir($user_directory) )
        {
          mkdir($user_directory, 0777);
          chmod($user_directory, 0777);
          $handle = fopen($user_directory."/index.php", 'x+');
          fclose($handle);
        }
  • 21-03-2009, 20:36:30
    #4
    Üyeliği durduruldu
    zaten mkdir ve chmod tanimlariniz var. safe mod on ise iç içe klasör açamasiniz yada açtiginiz bir klasörün içine dosya oluşturken sorun yaşarsınız. safe mod u off yaparsaniz sorun çözülür
  • 21-03-2009, 20:41:33
    #5
    mkdir çalışıyor,
    upload_user klasörü var onun içinde 1000 klasörü var yani ilk 1000 üyenin klasörü 1000 klasörünün içinde. üye id sine göre klasör açıyor yani burada problem yok.. Sadece klasörü açtığında GID ve UID'i "support" olarak vermesi gerekirken "apache" olarak veriyor. Bu yüzden üye web üzerinden upload yapamıyor. Yapmak istediğim mkdir yaparken GID ve UID'i "support" olarak vermek. Umarım anlatabilmişimdir

    safe modu maalesef off yaptıramıyorum server sahibinden, bu şekilde çözmem gerekiyor..
  • 21-03-2009, 22:27:20
    #6
    Üyeliği durduruldu
    safe mod u off yapmadan yaparsaniz bu sefer php ile erişemez hale gelirsiniz yine birşey çözmüş olamazsiniz.

    tüm sunucuyu düzenlemeleri şart degil domain bazında safe mod değiştirebilirler

    illaki kullanıcı değiştirecegim derseniz

    chmod($user_directory, 0777);

    satirinizdan sonra chown chgrp komutlarınıda ekleyerek yapabilirsiniz
  • 04-04-2009, 01:09:46
    #7
    	  // ADD USER DIRECTORY
    	  $user_directory = $url->url_userdir($this->user_info['user_id']);
    	  $user_path_array = explode("/", $user_directory);
    	  array_pop($user_path_array);
    	  array_pop($user_path_array);
    	  $subdir = implode("/", $user_path_array)."/";
    	  if( !is_dir($subdir) )
        { 
    	    mkdir($subdir, 0777); 
    	    chmod($subdir, 0777); 
          chown($subdir, support);
          chgrp($subdir, support);
    	    $handle = fopen($subdir."index.php", 'x+');
    	    fclose($handle);
    	  }
        if( !is_dir($user_directory) )
        {
          mkdir($user_directory, 0777);
          chmod($user_directory, 0777);
          chown($user_directory, support);
          chgrp($user_directory, support);
          $handle = fopen($user_directory."/index.php", 'x+');
          fclose($handle);
        }
    chown ve chgrp şu şekilde kullandım fakat herhangi bir değişiklik olmadı. sorun nerede acaba ?
    directadmine suphp'yi kuramadık bir türlü, kurulumda hata veriyor maalesef..