Sorun alma sistemi PHP ile çağrıları

3 Cevap

Ben aşağıdaki PHP komut dosyası var:

<?php
  $fortune = `fortune`;
  echo $fortune;
?>

ancak çıkış (hiçbir görünür hatalar atılır) sadece boş olduğunu.

I php -a çalıştırmak Ancak, bu işleri:

php > echo `fortune`;
Be careful of reading health books, you might die of a misprint.
        -- Mark Twain
php >

Ben bir yapılandırma yönergesi veya bu neden bir şey eksik?

Edit: Yani, $ php-cgi fortunetest.php kullanarak benim komut dosyası çalıştıran çalıştı ve beklendiği gibi çalıştı. Belki sorun Apache2'nin ile?

3 Cevap

Açıkçası, bu per-se bir programcı bir sorun değildir, bu yüzden ben SO onu göndermek istemiyordu. Her neyse, ben çözüm bulundu: fortune /usr/games yaşamış, bu yüzden bir $PATH sorunu olabileceğini düşündüm, ama ben yaptım {[(3)] } ve {koştu beklendiği gibi [(4)]} işe yaradı, ve /usr/games {idi [(2)]}. Görünüşe göre, Apache bu kullanıcı altında çalışan olsa bile, farklı bir $PATH değişkeni www-data kullanarak, bu yüzden komut (/usr/games/fortune yerine düz {[kullanımı yeniden yazdı 0)]} ve çalıştı. fortune script noktası değildi çünkü, o zaman bir atık tür oldu, ama ders öğrendim.

fortune komutu sadece sizin için bir teklif ya da ünlü alıntı çıktılar. Sen sadece basit bir düz metin dosyasında bu quotations saklamak, ya da bir veritabanı varsa, bunları bir tabloda saklayabilirsiniz. Sonra rasgele bir sayı üretmek ve teklifler dosya / tablosunda bu satırı almak için bu numarayı kullanmak için rand() fonksiyonu ya da PHP benzer kullanın. Bu şekilde, PHP komut sistemi fortune komutu yüklü olup olmadığının bağımlı değildir.

Dürüst olmak gerekirse bilmiyorum. Ancak Bu, yerine $fortune echo söylemek zorunda olabilir.