Дополнительные атрибуты php-файла, созданного в OSX 10.6.7

Я использую скрипт php для генерации файла LaTeX (report.tex) в моей локальной OSX 10.6.7 с MAMP (t файловая система - HFS+). Тогда я использую exec() собрать файл используя LaTex..Tex хорошо создан в файловой системе, но он не распознается как.tex-файл ни средством поиска, ни LaTex. Я проверил, что проблема не в самом файле, а в том, как его создал скрипт 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, но синтаксическая окраска текста не активируется (он активируется для первого, и их содержимое одинаково для каждого байта).

Я уверен, что эти проблемы связаны с этим дополнительным атрибутом. Мой вопрос: есть ли способ, с помощью 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-код, как вы создаете имя файла.

Другие вопросы по тегам