Тот же временный путь к файлу для локального хоста и рабочего сервера?
Каждый раз, когда я перемещаю один из своих веб-сайтов Drupal с локального хоста на рабочий сервер или наоборот, мне приходится редактировать свой settings.php
, чтобы обновить путь к каталогу временных файлов:
# $conf['file_temporary_path'] = '/home5/dawnings/public_html/fw2/tempdir';
$conf['file_temporary_path'] = 'c:/Temp/Drupal/tempdir';
Есть ли способ раз и навсегда указать уникальный относительный путь к этому временному файловому каталогу, который будет работать как для локального хоста, так и для рабочего сервера? Цель состоит в том, чтобы больше не обновлять мой settings.php
.
1 answers
Существует более 1 способа сделать что-то подобное. Я не знаю о простом "универсальном исправлении 1 строки", если вы не попробуете относительный путь, но это предполагает некоторую согласованность между вашими серверами, которой, очевидно, по вашим путям каталогов у вас нет.
Вариант 1:
В глубине тебя settings.php поставьте что-то вроде:
$local_settings_conf = dirname(__FILE__) . '/settings.local.php';
if (file_exists($local_settings_conf)) { include $local_settings_conf; }
Я делаю это программно в BASH с помощью:
#!/bin/bash
# I actually install drupal via the command line with a custom install
# profile and append on the tidbit to settings.php programmatically like
# so ...
cd $drupal_www_dir
drush site-install MY_INSTALL_PROFILE \
--locale=en \
--db-url="mysql://dev_user:dev@localhost:3306/demo_drupal" \
--account-name=admin \
--account-pass='admin' \
[email protected] \
--site-name=demo --verbose -y
#
# Now that drupal is built we modify the settings.php file with additional db
# and other custom configuration values by appending a child seetings file.
#
# This is in concept similar to an Apache vhost directive file.
#
echo "altering settings.php to be aware of our 3rd party remote databases."
sudo chmod -Rv a+rw "${drupal_www_dir}/sites/default"
read -r -d '' PHPCODE <<'EOF'
/*
* For our project we provide our own localized configuration schemes.
*/
$local_settings_conf = dirname(__FILE__) . '/settings.local.php';
if (file_exists($local_settings_conf)) { include $local_settings_conf; }
EOF
echo "${PHPCODE}" >> "${WWW}/sites/default/settings.php"
Затем для каждого сервера вы сохраняете версию этого файл. Или в этом файле создайте PHP-блок If-Else, который хранит правильное значение $conf
в зависимости от того, является ли этот файл конфигурации $local
vs $dev
или $prod
. Так что в принципе вы можете переместить все свои пользовательские settings.php вещи, которые не являются 100 % запасом drupal, помещаются в специальный прилагаемый файл конфигурации... таким образом, биржевой друпал settings.php остается как есть, и все ваши пользовательские материалы могут быть помещены в свой собственный файл по мере необходимости.
Вариант 2:
Используйте что-то вроде модуля среды и в PHP установите значение для file_temporay_path
с помощью variable_set, так как это то, что называется file_directory_temp().
Это два известных мне варианта, которые не являются хирургией головного мозга...
РЕДАКТИРОВАТЬ 26.09.2014 автором
- Вы также можете использовать Drush на каждом сервере для запуска:
drush vset file_temporary_path "to/some/path"
- Если вас устраивают настройки виртуального хоста, вы также всегда можете создать каталог с псевдонимами в конфигурации вашего веб-сервера (подняв проблему на 1 уровень в производственный стек (из PHP))