2011-06-04 67 views
0

我使用php腳本在MAMP本地OSX 10.6.7上生成LaTeX文件(report.tex)(文件系統爲HFS +)。 然後我使用exec()使用LaTex構建文件。 .tex在文件系統上很好地創建,但它不被finder識別爲.tex文件,也不被LaTex識別。 我已經檢查過這個問題不在文件本身,而是以php腳本創建它的方式。在OSX中創建的php文件的額外屬性10.6.7

事實上,如果我使用文本編輯器創建report.tex,該文件可以被系統正確處理,並且不會對LaTex造成任何問題。如果我運行php腳本,它會在同一個目錄中創建另一個具有相同名稱(!)的文件。 在內部,這些文件完全相同,用十六進制編輯器檢查。 如果我運行在DIR一個ls [email protected],我獲得

8 [email protected] 1 tom staff  871 4 jui 12:30 report.tex 
    com.apple.FinderInfo  32 
    com.apple.TextEncoding  15 
8 -rw-r--r-- 1 tom staff  805 4 jui 12:35 report.tex 

的最後一個文件是PHP生成一個。如果我在第一個文件運行xattr -p com.apple.FinderInfo,我得到

54 45 58 54 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

,如果我跑xattr -p com.apple.TextEncoding

UTF-8;134217984 

我可以打開第二個文件沒有問題,一旦指定的文本編輯器(該文件是沒有被識別爲.tex,但第一個是!)。該文件然後在TextWrangler中顯示得很好,但tex的語法着色未激活(它在第一個激活,它們的內容在字節上相同)。

我很確定這些問題都與這個額外的屬性有關。 我的問題是:有沒有一種方法,用PHP或OSX,實現一個正確的行爲,即由PHP創建的文件被認爲是一個正常的.tex文件,例如,覆蓋第一個(當然可以由LaTex處理)?

問候,

湯姆

回答

1

擴展屬性是一個紅色的鯡魚,因爲目錄中的文件不被它們的屬性區別,只是他們的名字。所以你不能在同一個目錄下有兩個同名的文件。幾乎可以肯定的問題是其中一個文件名有一個不可打印的字符,最有可能是一個空格。以下是一個示例:

$ echo "hi" >"a.php" 
$ echo "hi" >"a.php " 
$ ls -l 
total 16 
-rw-r----- 1 nad wheel 3 Jun 4 10:03 a.php 
-rw-r----- 1 nad wheel 3 Jun 4 10:03 a.php 
$ for f in * ; do echo ">$f<" ; done 
>a.php< 
>a.php < 

您可以執行類似操作來檢查文件名。檢查您的PHP代碼,瞭解如何創建文件名。

+0

你說得對,生成的名字末尾有空格。我的錯!謝謝! – Tom 2011-06-04 17:34:44

相關問題