ile kontrol edin. documentation page for register_shutdown_function(), Apache gibi bazı sunucularda betiğin çalışma dizininin değiştiğini belirtir.
dosya yazılı ancak .php
dosyası (DocumentRoot) olduğu değil, fakat Apache sunucusuna (ServerRoot) ait klasörde alır.
Bunu önlemek için, çalışma klasörü değişiklikleri bir çeşit hotwire gerekir. Sadece betiğiniz'u (ilk birkaç satırda) çalıştırmaya başladığında, gerçek çalışma klasörünü bir yere kaydetmeniz gerekir. define()
ile bir sabit oluşturmak, bunun için mükemmeldir.
define('WORKING_DIRECTORY', getcwd());
Ve böyle kapanma fonksiyonu kısmını değiştirmeniz gerekir:
function my_shutdown()
{
chdir(WORKING_DIRECTORY);
file_put_contents('test.txt', 'hello', FILE_APPEND);
error_log('hello', 3, 'test.txt');
}
register_shutdown_function('my_shutdown');
Bu şekilde, çalışma klasörü anında işlev çağrıldığında gerçek birine geri değişecek ve test.txt
Dosya, DocumentRoot klasöründe görünecektir.
Bazı modifikasyon
: fonksiyon ilan edilmiştir
register_shutdown_function()
sonra aramak daha iyidir. İşte bu yüzden,'un altında
'u fonksiyon kodunun üstünde yazmamıştım.
Bu cevap işe yaradı mı? Umarım sonuçlarınızı duyacağım. – Whisperity
Evet Geç güncelleme için üzgünüm – IMB
Apache sürümü önemli midir? İşlev belgelerine ilişkin bazı yorumlara göre öyle görünüyor. İki web sunucum var ve bir eseri var, diğeri yok. Yaptığı bir Mac üzerinde Apache/2.2.24 (Unix) 'dir. Ubuntu 14.04'te Apache/2.4.9 (Ubuntu) olmayan diğer. –