0

phpスクリプトを使用して、MAMPを使用してローカルOSX 10.6.7でLaTeXファイル(report.tex)を生成します(ファイルシステムはHFS +です)。次にexec()、LaTexを使用してファイルをビルドするために使用します。.texはファイルシステム上で適切に作成されますが、ファインダーやLaTexによって.texファイルとして認識されません。問題がファイル自体にあるのではなく、phpスクリプトが作成した方法にあることを確認しました。

実際、テキストエディタを使用してreport.texを作成すると、ファイルはシステムによって正しく処理され、LaTexで問題は発生しません。phpスクリプトを実行すると、同じディレクトリに同じ名前(!)の別のファイルが作成されます。内部的には、これらのファイルはまったく同じであり、16進エディタでチェックされます。ls -ls@dirで実行すると、次のようになります。

8 -rw-r--r--@ 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

テキストエディタを指定すると、2番目のファイルを問題なく開くことができます(このファイルは.texとして認識されませんが、最初のファイルは認識されます!)。その後、ファイルはTextWranglerで正常に表示されますが、texの構文の色付けはアクティブ化されていません(最初のファイルに対してアクティブ化され、その内容はバイト単位で同じです)。

これらの問題は、この余分な属性に関連していると確信しています。私の質問は:PHPまたはOSXで正しい動作を実現する方法はありますか?つまり、phpによって作成されたファイルは通常の.texファイルとして認識され、たとえば最初のファイルを上書きします(もちろん処理できます) LaTexによる)?

よろしく、

トム

4

1 に答える 1

1

ディレクトリ内のファイルは属性によって区別されず、名前だけが区別されるため、拡張属性は赤いニシンです。したがって、同じディレクトリに同じ名前の2つのファイルを置くことはできません。ほぼ確実に問題は、ファイル名の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コードを確認してください。

于 2011-06-04T17:08:22.180 に答える