OSX 10.6.7中php创建文件的额外属性

时间:2011-06-04 16:40:27

标签: php macos fwrite hfs+

我使用php脚本在我的本地OSX 10.6.7上使用MAMP生成LaTeX文件(report.tex)(文件系统是HFS +)。 然后我使用exec()使用LaTex构建文件。 .tex在文件系统上很好地创建,但是查找器或LaTex都不会将其识别为.tex文件。 我已经检查过问题不在文件本身,而是在PHP脚本创建它的方式。

实际上,如果我使用文本编辑器创建report.tex,系统可以正确处理该文件,并且不会对LaTex产生任何问题。如果我运行php脚本,它会在同一个目录中创建另一个名称(!)的文件。 在内部,这些文件完全相同,使用十六进制编辑器进行检查。 如果我在目录中运行ls -ls@,我会获得

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

一旦指定了文本编辑器,我就可以毫无问题地打开第二个文件(这个文件不被识别为.tex,但第一个文件是!)。然后该文件在TextWrangler中显示正常,但tex的语法着色未激活(它被激活为第一个,它们的内容按字节顺序相同)。

我很确定这些问题与这个额外的属性有关。 我的问题是:有没有办法用PHP或OSX来实现正确的行为,即php创建的文件被识别为普通的.tex文件,例如,覆盖第一个(当然可以处理)通过LaTex)?

此致

汤姆

1 个答案:

答案 0 :(得分: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代码,了解如何创建文件名。