2011-10-11 70 views
0

我使用php copy()函數,並得到奇怪的結果,這讓我谷歌,找不到任何關於這個話題,所以我的結論是,PHP的副本($ src,$ dest)函數不能有utf8字符在$ src和$ dest,但只是想讓你們確認一下 - 或者你知道解決方法嗎?php複製不能使用utf8字符?

最後得出結論: @azat:我感謝你的答案,並試圖幫助 - 但所有的一切,現在我知道我錯了!這些文件(當下載到我的計算機時確實有正確的字符!但是當我從WinSCP中查看文件夾的內容時,我看到它們都是亂碼,我認爲這是因爲WinSCP。無論如何,我會將您的答案標記爲正確的你是唯一一個幫助,使我認識到我的錯誤到底

編輯:系統上,我跑這就是Linux和PHP文件中的命令的例子是這樣的:

<?php 
    copy ("images/test.png", "images/myTestŽĆČĐŠžćčđš.png"); 
?> 

edit2:

#>uname -a 
Linux litij.avalon.hr 2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:13:52 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux 

#>cat /etc/mtab 
/dev/root /lib virtfs defaults 0 0 
/dev/root /opt virtfs defaults 0 0 
/dev/root /lib64 virtfs defaults 0 0 
/dev/root /usr/lib virtfs defaults 0 0 
/dev/root /usr/lib64 virtfs defaults 0 0 
/dev/root /usr/sbin virtfs defaults 0 0 
/dev/root /usr/share virtfs defaults 0 0 
/dev/root /usr/bin virtfs defaults 0 0 
/dev/root /usr/man virtfs defaults 0 0 
/dev/root /usr/X11R6 virtfs defaults 0 0 
/dev/root /usr/kerberos virtfs defaults 0 0 
/dev/root /usr/libexec virtfs defaults 0 0 
/dev/root /usr/local/bin virtfs defaults 0 0 
/dev/root /usr/local/share virtfs defaults 0 0 
/dev/root /usr/local/Zend virtfs defaults 0 0 
/dev/root /usr/local/IonCube virtfs defaults 0 0 
/dev/root /usr/include virtfs defaults 0 0 
/dev/root /usr/local/lib virtfs defaults 0 0 
/dev/root /var/spool virtfs defaults 0 0 
/dev/root /var/lib virtfs defaults 0 0 
/dev/root /var/cpanel virtfs defaults 0 0 
/dev/root /usr/local/cpanel/Cpanel virtfs defaults 0 0 
/dev/root /var/run virtfs defaults 0 0 
/dev/root /var/log virtfs defaults 0 0 
/dev/root /tmp virtfs defaults 0 0 
/dev/root /dev virtfs defaults 0 0 
/dev/root /bin virtfs defaults 0 0 
/dev/root /usr/local/apache/domlogs virtfs defaults 0 0 
/dev/root /etc/mail virtfs defaults 0 0 
/dev/root /home/fotoctim virtfs defaults 0 0 
none /proc proc rw 0 0 

值得注意的是,我的複製命令不給任何錯誤:(

if (copy($src, $dest)){ 
    echo "File <b>successfully</b> copied to $dest<br/>"; 
} 
else{ 
    echo "File <b>was not!</b> copied to $dest<br/>"; 
} 
+0

這不是'php的copy()函數',你知道的。但是關於你的操作系統。 –

+0

那麼你傳遞給'copy()'的字符串是什麼? – alex

+0

你有什麼操作系統?你有什麼文件系統? – azat

回答

1

的Ext4
LANG =的en_US.UTF-8

<? 
touch("/tmp/test.png"); 
copy("/tmp/test.png", "/tmp/myTestŽĆČĐŠžćčđš.png"); 
 
azat:~$ ls /tmp/myTestŽĆČĐŠžćčđš.png 
/tmp/myTestŽĆČĐŠžćčđš.png 

所以,問題是你有什麼文件系統和掛載選項

+0

謝謝你的回答,但你能告訴我如何找到我的文件系統和掛載選項?順便說一句,我在一個共享主機,所以我不知道是否改變一些設置將提供給我。 – Nikola

+0

'cat/etc/mtab',並在這裏發佈絕對路徑。 'uname -a'請 – azat

+0

併發布錯誤信息,同時提供'copy'。 – azat

0

我知道這是晚了,但你需要檢查的格式包含以下副本腳本的php文件是utf-8格式。所以當它複製文件時,它會以相同的格式複製它。這是我如何解決我的問題。

<?php 

copy($ path,$ dest); ?>