Дополнительные атрибуты php-файла, созданного в OSX 10.6.7 - PullRequest
0 голосов
/ 04 июня 2011

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

Я почти уверен, что эти проблемы связаны сэтот дополнительный атрибут вещь.Мой вопрос: есть ли способ, с помощью PHP или OSX, добиться правильного поведения, то есть файл, созданный php, распознается как обычный файл .tex и, например, перезаписывает первый (и, конечно, может быть обработан?).от LaTex)?

С уважением,

Том

1 Ответ

1 голос
/ 04 июня 2011

Расширенные атрибуты - красная сельдь, поскольку файлы в каталоге не различаются по своим атрибутам, а только по имени.Таким образом, вы не можете иметь два файла с одинаковым именем в одном каталоге.Почти наверняка проблема в том, что в одном из имен файлов есть непечатаемый символ, скорее всего пробел.Вот пример:

$ 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-код на предмет того, как вы создаете имя файла.

...