Linux üzerinde dosya / klasör adlarında özel karakterler;

2 Cevap php

Ben başka bir klasörden bazı görüntüleri taşımak için bir işlev Rename () (php) kullanıyorum.

Hedef klasör onlara özel karakterler var.

Sunucuda bunu yaparken Ancak, klasör adı ile bulunmazsa hatası alıyorum. Ve bu hata, klasör adları özel karakterler Kareler ile değiştirilir:

Warning: rename(../temp_images/668635375_1.jpg,../ad_images/B�tar/thumbs/668635375_1.jpg)
[function.rename]: No such file or directory in /var/www/etc....

O (windows xp) ama benim yerel makinede çalışır.

Any ideas? Troubleshooting tips?

Teşekkürler

2 Cevap

Ben bu noktada bir kodlama sorunu olduğunu varsayalım.

Ancak, dosya adları ASCII olmayan karakterleri kullanarak zaten kaygan bir eğim olduğunu.

I always recommend (another SO user bu harika ve basit bir fikir beni haberdar beri) olduğunu eğer yapabilirsen, urlencode() dosya adları ve urldecode() onları halka bunları hizmet zaman. Bu size benim için bildiği her dosya sistemi üzerinde çalışmak karakterden oluşan bir dosya adı verecek ve herhangi bir Unicode karakter tutabilir.

Bu büyük olasılıkla bir kodlama sorun: başka bir yerde, ya da her ikisi (? Kodlayan bu "özel" karakterleri php kaynağı, yazılı olduğu ...) bile kaynak olabilir, ya da olabilir. "Başka bir yerde" Yani, bu dize int doğru kodlama, php tarafından kötü çözümlenir veya doğru ayrıştırılır olabilir, ama (yanlış rename itibaren "geçti") ve gerçek adlandırma gerçekleştirir underlaying sistem çağrısı (/ dosya sistemi) ile .. Benim durumumda, kötü şeyler farklı sistemler tarafından okunan veya farklı API yoluyla erişilebilir klasörler / dosyalar için "özel" karakterleri kullandığınızda ortaya olasıdır ... Yani: do not "özel kullanmak "klasörü / dosyası oluşturulur" birinden farklı olabilir bir makine sistemi üzerinde bir http sunucu / php script tarafından erişilebilir olmalıdır klasörleri / dosyaları karakterler ".

Bir okuma this yardımcı olabilir.