İzinler 777 olarak ayarlanır ve dosya hala yazılabilir değil

5 Cevap php

Ben 777 dosya izinlerini ayarlamak var ama ben PHP ile dosyaya yazamıyor.

Ben açıkça ben yaptığımda dosya 0777 izinleri vardır ve bu benim FTP istemcisi görebilirsiniz:

echo (true === is_writable('file.txt')) ? 'yes' : 'no';

Ben 'hayır' olsun;

Ben de denedim:

echo (true === chmod('file.txt', 0777)) ? 'yes' : 'no';

Aynı sonuç ile.

Dizin listesi şöyle devam ediyor:

public_html
    public          0777
        css         0755
        js          0755
        file.txt    0777

Ve ben kullanıyorum. Htaccess dosyasını kamu alt klasörüne tüm trafiği yönlendirmek için. Tabii ki, ben (ben kontrol tarayıcıdan erişilebilir) yeniden gelen dosyayı dışarıda var:

RewriteRule  ^(file).*  - [L]

Neden ki?

5 Cevap

Ben Apache kullanıcı / grup dosyanın sahibi farklı bir kullanıcı / grup olarak çalışır sanırım. Bu durumda, dosyanın kendisi olması gerekiyor 0777.

public sadece PHP kullanarak dosyaları klasöre ekleyerek planlıyorsanız 0777 olması gerekir. Dosya ve klasör en az 5 kullanıcı varsa klasörün kendisi olmasa bile 0777, (read/execute), sen gerekir dosyaya yazma.

Sonunda, dosya ağaç gibi görünmelidir:

public_html
    public
        file.txt  0777

Doğal olarak, PHP kullanarak bu izinleri değiştirmeniz mümkün olmayacaktır, ancak FTP istemcisi yapabilirsiniz.

Hala çalışmıyorsa, PHP güvenli modda çalışıyor olabilir ya da böyle PHP Suhosin gibi bir uzantısı kullanıyor olabilirsiniz. Siz komut dosyası çalıştıran aynı kullanıcı / grup dosyanın sahibini değiştirerek daha iyi sonuç alabilirsiniz.

Yürütme kullanıcının kullanıcı / grup kimliği almak için, aşağıdaki kullanabilirsiniz:

<?php
echo getmyuid().':'.getmygid(); //ex:. 0:0
?>

Daha sonra, dosyanın sahibini değiştirmek için (terminal) chown kullanabilirsiniz:

> chown 0:0 file.txt

Herhangi bir şans dosyası olan klasörü web sunucusu tarafından yazılabilir değil mi?

Sen bunu oluşturmak hemen sonra dosyayı chmod var.

function Doo_Chmod($path, $chmod = null)
{
    if (file_exists($path) === true)
    {
    	if (is_null($chmod) === true)
    	{
    		$chmod = (is_file($path) === true) ? 644 : 755;

    		if (in_array(get_current_user(), array('apache', 'httpd', 'nobody', 'system', 'webdaemon', 'www', 'www-data')) === true)
    		{
    			$chmod += 22;
    		}
    	}

    	return chmod($path, octdec(intval($chmod)));
    }

    return false;
}

OpenCart i vqmod kurmadan ve gerekli tüm izinler verdikten sonra bu hata ile karşı karşıya.

Biraz araştırma sonrası, buldum.

"WRITEABLE DEĞİL MODS ÖNBELLEK PATH" aslında klasörünün kendisi ve önbellek klasörü değil vqmod atıfta edilir.

sudo chmod -R 777 vqmod 

kök dizininde .....

Hiçbir suç, ama 'file.txt' için yolu düzeltmek nedir? (Yani, right dosyasını test edilmiştir)