Может помочь, если вы работаете на Mac и используете TextMate, хотя это и не обязательно.
Мое местоположение php:
$which php
/opt/local/bin/php
Сценарий:
#!/opt/local/bin/php
<?php
shell_exec("echo -n 'my-string' > out.txt");
?>
-n для эха подавляет символ новой строки, который автоматически добавляется ко всем командам эха оболочки.
Если я запускаю приведенный выше код php из оболочки:
chmod u+x myfile.php
./myfile.php
Я получаю'out.txt', содержимое которого:
-n my-string
Если я выполню точно такой же код в TextMate, содержимое 'out.txt' будет правильным:
my-string
Я не могу понять, что такое php, добавив в вывод буквальную строку '-n'.Мне действительно интересно, почему TextMate делает правильные вещи.Я проверил, что оба используют один и тот же php, php -i показывает в основном одни и те же вещи, конечно, есть различия, поскольку один запускается в TextMate, другой - в оболочке, поэтому один вывод имеет указатели на файл, а другой - нет.«т.Насколько я могу судить, $ PATH и $ ENV одинаковы.
Я пробовал несколько различных методов, чтобы обойти это, ни один из которых не работает.На самом деле я не смогу использовать обходной путь, так как это было сведено к простому случаю для публикации в SO.Мой сценарий использования этого канала для pbcopy, который, как я полагал, был только функцией Mac OS X, поэтому я использовал здесь >> перенаправление, потому что оно универсально.иметь завершающий символ новой строки, который опасен, так как вставляет в оболочку то, что ему предшествует.
Спасибо