Phar arşiv çıkışları jibberish

3 Cevap php

Aşağıdaki kod ile benim ilk phar arşiv oluşturdum:

$phar = new Phar('myphar.phar');
$phar->addFile("index.php");
$phar->setStub($phar->createDefaultStub('index.php', 'index.php'));

Sadece tek bir çıkış yapar index.php bahsetti:

echo "I am in a PHP archive!";

When I run the above code, myphar.phar is created and when I run in at the cli, the output is "I am in a PHP archive!". However, when I call the myphar.phar from a webbrowser, it prints some weird characters, like ????�???�?, instead of my index.php contents and no error.

Ben phar arşivleri desteklemek benim apache httpd.conf aşağıdaki satırı eklendi:

AddType application/x-httpd-php .phar

Ama değil tarayıcıda, cli neden çalıştığını bilen var mı?

3 Cevap

Bu sorunun cevabı yatıyor

detect_unicode

php.ini ayarı.

PHP bir hata detect_unicode etkinse (http://bugs.php.net/bug.php?id=42396) hangi yapar __ halt_compiler () düzgün çalışmayabilir bulunmamaktadır.

Yani geçici bir çözüm olarak, set

detect_unicode = Off

php.ini. Eğer ödemek zorunda fiyat (onlar hala ince iç yorumlar ve dizeleri) değişkenleri, fonksiyonları ve sınıfları adı olarak unicode karakterleri kullanmak için yetersizlik

Eğer web sayfasının kaynağını görüntülemek için denediniz mi? Belki bir şekilde httpd.confunuzu değiştirdikten sonra Apache yeniden unuttum.

Phar dosyasının benim anlayış, size geri karakterleri alıyorsanız eğer olacak çağırıyor olmak vardır sizin php komut dosyası ...., apache size ikili formatta dosya gönderme demektir (fopen) açmak için varsayalım ....

Eğer apache config bu "AddType application / x-gzip. gz. tgz. phar" eklerseniz, bu dosyayı yapacak indir-mümkün başka bir arşiv dosyası gibi bir php script gibi çalıştırmak olmaz