Intereting Posts
Как получить следующую предыдущую категорию в той же таксономии? Плагины, не работающие над запросами AJAX Как создать поля запроса Недостатки использования опций -Indexes Когда я повторно сохраняю сообщение с разделами , объекты имеют двойное экранирование (> становится & gt; и т. Д.), доступ к сериализованным данным wordpress вне wp Правильный способ обновления пула таксономии с использованием register_taxonomy? query_post игнорирует аргумент Как отобразить персонализированный пост в виде страницы (но неотредактированный)? Указание количества сообщений на странице с использованием встроенного плагина (: Показать идентификаторы отображаемых элементов медиабиблиотеки При обрезке изображения заголовка сохраняйте метаданные (то есть имя, описание и т. Д.) Из исходного изображения? локализация темы и плагинов на английском языке (первоначально на другом языке) Переадресация домена в многопользовательском WordPress Введите изображение поля в почтовой категории, перейдите к настраиваемой категории цикла

Лучшая практика для версии wp-config.php?

Есть ли лучший способ включить ваш файл wp-config.php в репозиторий управления версиями?

Я рассматриваю возможность создания нового сайта с такой конфигурацией (аналогично Alex King и Mark Jaquith ):

 /index.php /local-config.php /wp-config.php /wp/ (core) /wp-content/ (plugins, themes, etc.) 

Как я могу это сделать, не подвергая свои пароли git, если этот репозиторий станет публичным?

Особенно в записи Марка, похоже, что local-config.php может хранить локальные данные базы данных и пароли, но производственные остаются в wp-config.php. Это слишком много проблем, и я должен просто оставить wp-config.php неверсированным?

Вот как я это делаю, и я не нашел ничего лучше этого. Я сохраняю другую версию файла wp-config.php под управлением версии, а затем сохраняю файл с одним каталогом, который содержит все учетные данные базы данных и соли / ключи. Также таким образом, я могу различать тип установки, которую я запускаю, и делать что-то по-другому на основе этого.

Вот wp-config.php Я держусь под git ( https://gist.github.com/1923821 ):

 <?php /** * Define type of server * * Depending on the type other stuff can be configured * Note: Define them all, don't skip one if other is already defined */ define( 'DB_CREDENTIALS_PATH', dirname( ABSPATH ) ); // cache it for multiple use define( 'WP_LOCAL_SERVER', file_exists( DB_CREDENTIALS_PATH . '/local-config.php' ) ); define( 'WP_DEV_SERVER', file_exists( DB_CREDENTIALS_PATH . '/dev-config.php' ) ); define( 'WP_STAGING_SERVER', file_exists( DB_CREDENTIALS_PATH . '/staging-config.php' ) ); /** * Load DB credentials */ if ( WP_LOCAL_SERVER ) require DB_CREDENTIALS_PATH . '/local-config.php'; elseif ( WP_DEV_SERVER ) require DB_CREDENTIALS_PATH . '/dev-config.php'; elseif ( WP_STAGING_SERVER ) require DB_CREDENTIALS_PATH . '/staging-config.php'; else require DB_CREDENTIALS_PATH . '/production-config.php'; /** * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. */ if ( ! defined( 'AUTH_KEY' ) ) define('AUTH_KEY', '9*W=5&lt;Rw-)c].9}g?^[:!j]h+Efr&lt;y$&lt;YmV0XOo|lOIujEE}+[R}iAQZ :Sy3wN}'); if ( ! defined( 'SECURE_AUTH_KEY' ) ) define('SECURE_AUTH_KEY', 'APge3~H;g+b0FyNF&amp;e`$=g?qj9@FQwqFe^Q4(@p#kDa=NR? $Z9|@v*a(tOj*B+.'); if ( ! defined( 'LOGGED_IN_KEY' ) ) define('LOGGED_IN_KEY', '5l0+:WTpj8#[V|;&lt;Iw;%rkB(A}r++HwT|s[LW!.wt.=5J!b%Z{F1/[LxQ*d7J&gt;Cm'); if ( ! defined( 'NONCE_KEY' ) ) define('NONCE_KEY', 'zO2cmQX`Kc~_XltJR&amp;T !Uc72=5Cc6`SxQ3;$f]#J)p&lt;/wwX&amp;7RTB2)K1Qn2Y*c0'); if ( ! defined( 'AUTH_SALT' ) ) define('AUTH_SALT', 'je]#Yh=RN DCrP9/N=IX^,TWqvNsCZJ4f7@3,|@L]at .-,yc^-^+?0ZfcHjD,WV'); if ( ! defined( 'SECURE_AUTH_SALT' ) ) define('SECURE_AUTH_SALT', '^`6z+F!|+$BmIp&gt;y}Kr7]0]Xb@&gt;2sGc&gt;Mk6,$5FycK;u.KU[Tw$345K9qoF}WV,-'); if ( ! defined( 'LOGGED_IN_SALT' ) ) define('LOGGED_IN_SALT', 'a|+yZsR-k&lt;cSf@PQ~v82a_+{+hRCnL&amp;|aF|Z~yU&amp;V0IZ}Mrz@ND])YD22iUM[%Oc'); if ( ! defined( 'NONCE_SALT' ) ) define('NONCE_SALT', '|1.e9Tx{fPv8D#IXO6[&lt;WY*,)+7+URp0~|:]uqiCOzu93b8,h4;iak+eIN7klkrW'); /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each a unique * prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'ft_'; /** * WordPress Localized Language, defaults to English. * * Change this to localize WordPress. A corresponding MO file for the chosen * language must be installed to wp-content/languages. For example, install * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German * language support. */ define( 'WPLANG', '' ); /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. */ if ( WP_LOCAL_SERVER || WP_DEV_SERVER ) { define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); // Stored in wp-content/debug.log define( 'WP_DEBUG_DISPLAY', true ); define( 'SCRIPT_DEBUG', true ); define( 'SAVEQUERIES', true ); } else if ( WP_STAGING_SERVER ) { define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); // Stored in wp-content/debug.log define( 'WP_DEBUG_DISPLAY', false ); } else { define( 'WP_DEBUG', false ); } /* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); 

И вот локальный файл конфигурации, который я держу в одном каталоге выше корня WordPress, и это также делает его вне доступного в Интернете каталога, поэтому, если apache перестает анализировать файлы PHP и начинает их выбрасывать, наши учетные данные в базе данных по-прежнему безопасны ( https: / /gist.github.com/1923848 ):

 <?php /** * WordPress config file to use one directory above WordPress root, when awesome version of wp-config.php is in use. * * Awesome wp-config.php file - https://gist.github.com/1923821 */ /* WordPress Local Environment DB credentials */ define('DB_NAME', 'project_21'); define('DB_USER', 'root'); define('DB_PASSWORD', 'root'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); /* Keys & Salts */ define('AUTH_KEY', '5H%)s-nQ,+fn0gwg/p1UjBTmCQ?l[8-!>Q{MW&?X3DM,OF;TaI<SOOTrl0+-@) *'); define('SECURE_AUTH_KEY', '+%rr@,XIt-V+[.B9++uH1L,L+r)uq}5(:~=&4~Lk|.LV|y;R}fEo?G}+Sntf_JN}'); define('LOGGED_IN_KEY', 'Szv!gQm9#(L&TUD OnM`>sXGge:m1j`L2 5sO;hRNVhlN>IUED1/`%<[ly-GxVJ '); define('NONCE_KEY', 'o-Jo;>G#-%~,[ki@REqXV%4^I.HDnc.3]P;e8];4pJt% $xe5K<aOb|a2*QKV4c-'); define('AUTH_SALT', '8-tQb3d|W8,;Y_#mfuFB.1&b%U2fnlLD|F&yH).tLRX=ANEdNap{78o|9tqv6JPt'); define('SECURE_AUTH_SALT', 'RSa%^qd~T|@+!-;qgh,qK-GJ}zPpgxz#+@v6-I;BMwqT`TzGTtg_^n*ILxGOdbq4'); define('LOGGED_IN_SALT', ']+XV)YK.Q-EU1vR [BT!Y$!d(J_[AO37OP[Fg[/esFx;6cI-L[^O|cvtw9F[;_*Q'); define('NONCE_SALT', 'iP{nTQBzy&f^hSbwBgyan.v9<+ErvAMi2ymLhz`Tl-fF?HXa(j<W`wA*8U3R#-|w'); 

Таким образом, если указанный выше файл называется local-config.php , моя система ведет себя как локальная установка. Если его названный staging-config.php , он ведет себя как промежуточная установка, и если его имя production-config.php . Это помогает мне иметь разные значения определенных констант, таких как отладка, которые имеют разные значения в разных средах и все еще имеют все под SCM (git). Потенциалы бесконечны и нет необходимости в хакерах, требуемых для разных условий.

Это гарантирует, что вы никогда не раскрываете какую-либо конфиденциальную информацию для публики, и я использую это только для начала любого проекта, над которым я работаю, у меня есть более сильные ключи по умолчанию, и как только я добавлю их во второй конфигурационный файл в один каталог выше, они используются вместо тех, которые определены здесь. Блаженство!

Как я могу это сделать, не подвергая свои пароли git, если этот репозиторий станет публичным?

Если ваш файл wp-config.php находится в управлении версиями, то любые пароли, которые он содержит, также будут находиться в управлении версиями. Единственный способ избежать этого – не помещать файл в управление версиями.

Это слишком много проблем, и я должен просто оставить wp-config.php неверсированным?

Мое чувство кишки должно было бы полностью исключить wp-config.php . Но есть некоторые способы обойти это.

Извлеките часть wp-config.php которая содержит ваши пароли и хэши в отдельный файл, и include() в обычный файл wp-config.php . Затем поместите файл wp-config.php под управлением версии, но сохраните файл include() отдельно.

wp-config.php :

 <?php /** * The base configurations of the WordPress. * * This file has the following configurations: MySQL settings, Table Prefix, * Secret Keys, WordPress Language, and ABSPATH. You can find more information * by visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing * wp-config.php} Codex page. You can get the MySQL settings from your web host. * * This file is used by the wp-config.php creation script during the * installation. You don't have to use the web site, you can just copy this file * to "wp-config.php" and fill in the values. * * @package WordPress */ /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', ''); include( 'conf.php' ); /**#@-*/ /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each a unique * prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wp_'; /** * WordPress Localized Language, defaults to English. * * Change this to localize WordPress. A corresponding MO file for the chosen * language must be installed to wp-content/languages. For example, install * de_DE.mo to wp-content/languages and set WPLANG to 'de_DE' to enable German * language support. */ define('WPLANG', ''); /** * For developers: WordPress debugging mode. * * Change this to true to enable the display of notices during development. * It is strongly recommended that plugin and theme developers use WP_DEBUG * in their development environments. */ define('WP_DEBUG', false); /* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); /** Sets up WordPress vars and included files. */ require_once(ABSPATH . 'wp-settings.php'); 

Теперь вы можете видеть, что пароли и хэши вообще не включены в wp-config.php .

conf.php :

 // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'database_name_here'); /** MySQL database username */ define('DB_USER', 'username_here'); /** MySQL database password */ define('DB_PASSWORD', 'password_here'); /** MySQL hostname */ define('DB_HOST', 'localhost'); /**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); 

Но, честно говоря, на данный момент вы просто добавляете избыточный уровень абстракции здесь. Вся причина, по которой wp-config.php является отдельной, в первую очередь потому, что она специфична для среды. Вы не должны копировать его с локального сервера на производство вообще … поэтому он не должен находиться под управлением версиями вообще.

В примере Марка предполагается, что вы работаете с частным репо:

 if ( file_exists( dirname( __FILE__ ) . '/local-config.php' ) ) { include( dirname( __FILE__ ) . '/local-config.php' ); define( 'WP_LOCAL_DEV', true ); } else { define( 'DB_NAME', 'production_db' ); define( 'DB_USER', 'production_user' ); define( 'DB_PASSWORD', 'production_password' ); define( 'DB_HOST', 'production_db_host' ); } 

Вместо определения учетных данных вы могли бы так же легко создать файл production-config.php и включить его в условную проверку:

 if ( file_exists( dirname( __FILE__ ) . '/local-config.php' ) ) { include( dirname( __FILE__ ) . '/local-config.php' ); define( 'WP_LOCAL_DEV', true ); } else { include( dirname( __FILE__ ) . '/production-config.php' ) } 

Затем в вашей версии без преобразования: config.php:

  define( 'DB_NAME', 'production_db' ); define( 'DB_USER', 'production_user' ); define( 'DB_PASSWORD', 'production_password' ); define( 'DB_HOST', 'production_db_host' ); 

Вы можете зафиксировать файл wp-config.php в репозитории без ваших секретных строк, а затем запустить:

 git update-index --assume-unchanged wp-config.php 

Это позволит git предположить, что файл, ну, не изменился.