Ben PHP fopen () fonksiyonu ile bir dosyayı açmak için çalıştı ve o akışı açmak için başarısızlık çıkış uyarı: izni reddedildi. Sen apache belirli bir dosyayı açmak için yeterli ayrıcalıklara sahip değil karşılaşabileceğiniz uyarı / hata olduğunu biliyorum.
Ancak görüntülenen uyarı mesajında rağmen, benim PHP komut başarıyla dosya açtı ve içine bir dize yazdı. Bu mantıklı değil.
Peki ne oluyor? I fopen () hemen önce @ koyabilirsiniz ama yine de garip ve ben PHP bu şekilde davranır neden bilmek istiyorum. Ben doğru konfigüre etmediyseniz bir şey var mı?
class XMLDB {
private $file = null;
private $xml = null;
private $defs = array();
private $recs = array();
// private members above, public members below
public function __construct($xmlfile) {
if (!file_exists($xmlfile)) {
die('XML file does not exist.');
}
$this -> file = $xmlfile;
$this -> xml = simplexml_load_file($this -> file);
$this -> iniVocab();
$this -> iniData();
}
... / * Kamu ve özel fonksiyonlar birçok * /
public function commit() {
$xmlfile = fopen($this -> file, 'w'); // this is causing the warning
$doc = new DOMDocument('1.0');
$doc -> preserveWhiteSpace = false;
$doc -> loadXML($this -> xml -> asXML());
$doc -> formatOutput = true;
fwrite($xmlfile, $doc->saveXML());
}
public function __destruct() {
$this -> commit();
/* comment this line out and there won't be any warnings,
/* therefore it should trace back to here. So I found out that
/* it's when I use die() that eventually calls __destruct()
/* which in turn calls commit() to trigger this fopen warning. */
}
}
EDIT: Yani açılan dosyaya bir şey yazmak çalıştığınızda her ilk kez, her şey yolunda. Dosyaya değişiklikleri yazmak için) (> tamamlama - sınıf sayfa kaldırıldığında tekrar dosyadaki tüm değişiklikleri işlemek için çalışırsa o zaman, o tahrip edilecek nesne, bu __ imha () yöntemini çağırır ve $ bu durumda, - hata oluşur ve bu dosya ve reddedildi mesajı pompalama yazmak için reddediyor zaman bu. Bu garip.