как установить системный $ PATH вне пользователей .bash_profile в OSX для добавленной версии PHP, которую вы установили - PullRequest
1 голос
/ 21 апреля 2011

Хорошо, вот моя проблема.Я пытаюсь написать скрипт php, который будет запускать команды следующего типа.

exec("$(which php) -f /path/to/script.php >> /path/to/log.log 2>&1 &");

Проблема в том, что я использую леопарда OSX 10.5 и использую пакет Entropy PHP.Это создает php в / usr / local / php5 / bin.Обычный php, который устанавливается с OSX в / usr / bin.Поэтому, когда PHP выполняет эту команду, он использует неверный исполняемый файл PHP.Теперь я знаю, как изменить $ PATH в моем .bash_profile, добавив его в начало $ PATH, чтобы система взяла нужный мне PHP, а не PHP по умолчанию.Проблема в том, что при запуске php из скрипта он не делает этого под моим пользователем.Так что тогда у него нет обновленных настроек $ PATH.

Я также посмотрел на настройку его в / etc / paths и etc / paths.d /, но они оба добавляют путь до конца, мне нужнодобавить в начало, чтобы мой сценарий использовал правильный исполняемый файл PHP.

Я знаю, что, возможно, смогу запустить другую команду exec и указать путь, но это только проблема локальной среды, и когда код переходит кпроизводство мне не понадобится этот набор.

Ответы [ 3 ]

2 голосов
/ 21 апреля 2011

Один из вариантов - установить глобальный путь для всех пользователей. См. этот ответ для нескольких примеров.

Например, если пользователь, запускающий команду, использует bash в качестве оболочки, вы можете отредактировать / etc / bashrc, добавив строку вроде:

export PATH="$PATH:/more/paths:/

Другой вариант - изменить /etc/launchd.conf (обратите внимание, что по умолчанию он не существует на Leopard и ожидает синтаксис csh setenv)

1 голос
/ 21 апреля 2011

Вы пытались выполнить это перед вашей функцией exec:

$my_new_path = '/usr/local/php5/bin';
putenv( "PATH=" . $my_new_path . PATH_SEPARATOR . getenv('PATH') );

//then run your exec() call
0 голосов
/ 21 апреля 2011

Если бы вы были на вашем месте, я бы создал скрипт-обертку специально для вызовов exec и shell:

#!/usr/bin/env php
<?php 

include('/path/to/script.php');

Таким образом, вы можете использовать переменную окружения, которая указывает на php, которая будет работать на большинстве систем nix.

Теперь это все еще не дает вам права на установку OS X, так как вы будете иметь жесткий код пути или следовать ответу, связанному с nimrodm.

...