Set php dosya izinleri bu yüzden sadece benim sunucunun kıvırmak çalıştırabilirsiniz

4 Cevap php

Ben herkes kendi tarayıcısı üzerinden çalışabiliyor olmak istemiyorum bir PHP komut dosyası var.

Bu e-posta gönderir ve benim sunucunun cron tarafından kıvrılma yoluyla denir, henüz kamu www dizininde olması gerekir. Ne izinler veya sahibi sadece benim sunucunun kıvırmak (ya da okuduğum demek) dosyasını çalıştırmak için izin için dosyayı ayarlamak gerekiyor?

Ben CentOS gidiyorum.

Teşekkürler!

4 Cevap

. Dizinde veya bu gibi php dosyasının başında bir temel şifre kontrolü uygulayarak uygun erişim sınırlamaları ile bir htaccess dosyası koyarak dosyalara erişimi kısıtlamak olabilir ya da:

<?php
$password = $_GET['password'];
hash = '40bd001563085fc35165329ea1ff5c5ecbdbbeef'; //precalculated sha1 hash of your password
if (sha1($password) != $hash) {
    die('Forget it!');
}

Ilave güvenlik için bu daha rafine olabilir, ama fikir olsun ...

CLI ile betik (php -f cron çağırarak) ve PHP script çalıştırmak nasıl kontrol sahip: Eğer yapabiliyorsanız, ben bunu farklı bir şekilde yapıyor tavsiye ederim. Siz komut php_sapi_name() kullanarak Komut Satırı Arabirimi denir olmadığını öğrenmek ve web çağrıldığını ne zaman kesebilirler. Yani bildiğim kadarıyla gördüğünüz gibi en güvenli çözüm olacaktır.

Bunu gerçekten almak gerekiyorsa curl, Josh'un çözüm kullanın veya bir olsun parametre olarak komut dosyasına eklenmesi gereken bir parola tanımlayın:

curl domain.com/script.php?password=123456

geçiş anahtarı olarak korkunç güvenli değil kontrol $_SERVER["REMOTE_ADDR"] ve emin 127.0.0.1 olan yapım ile birleştirmek, özellikle crontab görünür olacak, ama dışarıdan erişime karşı iyi bir koruma sağlamalıdır .

Neden sadece kıvrılma yoluyla yerine komut satırından çalıştırmak için php-cli kullanmak değil mi?

Eğer gerçekten barındırması gerekir eğer. Htaccess böyle bir şey yapabilirsiniz

<Directory /your/path/>
Order allow,deny
Allow from 192.168.1.0/24
Allow from 127
</Directory>

Ifadelerine gibi bu, mümkün değildir. Ne söyleyebilirim, ben sizin sorununuzu çözmek için kullanabilirsiniz bir dizi seçenek olduğunu düşünüyorum:

Siz chown root veya başka bir kullanıcı olabilir ve daha sonra 700 chmod, ve sonra sahibinin crontab dosyasından PHP'nin komut satırı işlevlerini kullanarak cronjob gelen komut dosyası çağırın.

Eğer kıvrılma üzerinde dosyaya erişmek için gerekiyorsa, o zaman web sunucusu vuruyorlar ve web sunucusu herkes komut dosyası çalıştırmak için izin verecek senaryoyu okumak / yürütmek mümkün olmalıdır.

Başka bir seçenek burada açıklandığı gibi, kural tabanlı erişim kontrolü kullanmak olacaktır: http://library.linode.com/web-servers/apache/access-control/rule-based-access sunucudan kaynaklanan bağlantılar sadece söz konusu dosyaya erişmek mümkün olacak emin olmak için, ama bu tamamen idealdir kendisi değildir.

Orada tabii ki başka çözümler vardır, ama ben bu yararlı olduğunu umuyoruz.