2016-04-01 20 views
2

rename() komut satırından düzgün çalışır, ancak cron işinden çalıştırıldığında, rename() bunu yapmaz. Connect.php dosyası çalıştığından beri, cron işinin doğru dizinde olduğunu varsayalım, ancak rename() 'in neden çalışmadığını anlayamıyorum. Ben mutlak yolları denedik ve onlar işe yaramadı:rename() cron işinde çalışmıyor

<?php 
include 'connect.php'; 

$oldlocation='xxx/xxx/'.$oldfilename; 
$newlocation='yyyy/xxx/'.$newfilename; 
$move=rename("$oldlocation","$newlocation"); 

cron işi: * * * * */usr/bin/php /usr/xxx/xxx/xxx/xxx.php -q -f

Sunucuya root erişimi yok. Bu bir SHELL komut dosyası üzerinden çalıştırılacak mı?

+1

10 Eksik "$ oldlocation" ve "$ newlocation" göreceli yollar olarak görünüyor. Cron muhtemelen komut dosyanızı farklı bir konumdan yürütür, mutlak hale getirmeye çalışın. – jojonas

+1

Mutlak yollarınızı doğru şekilde ayarladığınızdan emin misiniz? Cron kesinlikle göreceli yollarla çalışmaz, ancak mutlak yolunuzun kökten tanımlandığından emin olmalısınız - 'include' /home/youraccount/public_html/includes/connect.php '; ' –

+0

connect.php dosyası tam olarak gösterildiği gibi çalışır ve neden emin değilim, ama rename() mutlak yollara ihtiyaç, ben/yolun başında, ben bir tarayıcı veya komut satırında php için gerekli değil sanırım ama mutlak için gerekli yollar, yine tahmin ediyorum ama araştıracak. Yanıtlar için teşekkürler – jester

cevap

2

Geçerli yol, cron yürütülürken, cron işlemini çalıştıran kullanıcının home dizinidir. Ayrıca bu post'a bakın.

Göreli yolu mutlak olarak değiştirin ve sorun giderildi.

0

Çözüm, doğrudan bir dizin sorunu değil (iyi bir şekilde): $ oldlocation = 'xxx/xxx /'.$ oldfilename; 'un şu adrese değiştirilmesi gerekir: $ oldlocation = '/ xxx/xxx /'.$ oldfilename; Sanırım ilk/

+0

Bu, jojonas'ın, Sean Cunningham'ın ve “Ben” in mutlak yolu. İlk '/', sistemi mutlak bir yol kullanmaya yönlendiren karakterdir. –

+0

Evet ve teşekkürler. Bir sebepten dolayı, başka bir yerde, mutlak bir yolun, anlamaya çalışarak/saatlerce harcadığım ile başlayamayacağı bir yer bulamadım. Asıl soruda, mutlak yolları denediğimi anladım, bu yüzden onlara ihtiyacım olduğunu biliyordum, ama sonra kodda, yapamadığım hayatım için yanlış yol formatını gösterdim. Cevaplar için teşekkür ederim. – jester

+0

Sorunu çözdüğümde cevabımı kabul ettiğinde iyi olur. Teşekkürler –