У меня есть 2 компьютера Mac, общая конфигурация которых я хочу синхронизировать. Для Apache и PHP я храню файлы conf (httpd.conf и php.ini, соответственно) в моем Dropbox (~/Dropbox/config
) и использую символические ссылки для ссылки на общий доступ из ожидаемого местоположения.Настройка include_path в общем файле php.ini
Аналогичным образом, я разделяю пару кодовых баз таким же образом. Физические файлы находятся в ~/Dropbox/Development
и связаны с ~/Development/
. Теперь мне нужно поделиться библиотекой служебных классов, и я не могу понять, как это сделать. Проблема в том, что каждый каталог в игре находится в моем домашнем каталоге, и мое имя пользователя отличается на каждой машине. На одном, это ~/rwilkerson
и это ~/rob
с другой.
Как я могу заставить свой php.ini разрешить это? В моем httpd.conf я сделал это, используя переменные среды. Например, в файле конфигурации виртуального хоста я могу установить для моего веб-корня значение /Users/${SUDO_USER}/path/to/webroot
. Поскольку я использую sudo для перезапуска Apache (sudo apachectl restart
), переменная окружения оценивает правильное имя пользователя на той машине, на которой я включен.
Насколько я могу судить, я не могу использовать переменные в своем php.ini аналогичным образом. Я думал, что если бы я просто включил оба пути в мой include_path
, PHP просто проигнорировал бы тот, который не существует на данной машине, но это, похоже, не так. Мои общие библиотеки будут включены только в том случае, если правильный путь отображается до неправильного пути.
Я не могу найти ни одного ресурса, который разъясняет нюансы того, как работает директива include_path
, поэтому я не могу найти никакого способа обойти это очевидное ограничение. У кого-нибудь есть идеи?
Ответ:
Я закончил с использованием раствора StasM # 1 ниже. В моем файле httpd.conf (также совместно), я добавил:
php_value include_path "/opt/local/lib/php:${HOME}/Dropbox/Development/lib/php/classes"
Делать это отменяют любое значение в php.ini
и прекрасно работали.
Я вроде предположил, что 'include_path' будет игнорировать несуществующие каталоги, но это, похоже, не так. Однако, поскольку вы подтвердили, я сделаю еще несколько испытаний. Может быть, я просто не сделал достаточно глубокую проверку. Однако идея 'httpd.conf' хорошая. Не уверен, почему я об этом не думал, но есть ли способ «включить php_value include_path» _append_ путь включения, а не перезаписывать его? –
Да, это просто не работает. Если у меня есть '/ Users/rwilkerson/Dropbox/dev/lib/php/classes' перед'/Users/rob/Dropbox/dev/lib/php/classes' в моем 'include_path' (на машине, домашний каталог которой'/Users/rob', классы не загружаются. Если я меняю порядок, они это делают. –
Это похоже на ошибку, возможно, вы хотите отправить вопрос с воспроизведением на bugs.php.net? – StasM