นี่คือวิธีที่ฉันทำและฉันไม่ได้เจออะไรที่ดีไปกว่านี้ ฉันเก็บไฟล์ 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<Rw-)c].9}g?^[:!j]h+Efr<y$<YmV0XOo|lOIujEE}+[R}iAQZ :Sy3wN}');
if ( ! defined( 'SECURE_AUTH_KEY' ) )
define('SECURE_AUTH_KEY', 'APge3~H;g+b0FyNF&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|;<Iw;%rkB(A}r++HwT|s[LW!.wt.=5J!b%Z{F1/[LxQ*d7J>Cm');
if ( ! defined( 'NONCE_KEY' ) )
define('NONCE_KEY', 'zO2cmQX`Kc~_XltJR&T !Uc72=5Cc6`SxQ3;$f]#J)p</wwX&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>y}Kr7]0]Xb@>2sGc>Mk6,$5FycK;u.KU[Tw$345K9qoF}WV,-');
if ( ! defined( 'LOGGED_IN_SALT' ) )
define('LOGGED_IN_SALT', 'a|+yZsR-k<cSf@PQ~v82a_+{+hRCnL&|aF|Z~yU&V0IZ}Mrz@ND])YD22iUM[%Oc');
if ( ! defined( 'NONCE_SALT' ) )
define('NONCE_SALT', '|1.e9Tx{fPv8D#IXO6[<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');
และนี่คือไฟล์ config ท้องถิ่นซึ่งผมเก็บหนึ่งไดเรกทอรีดังกล่าวข้างต้นราก 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
ไว้จะทำงานเหมือนกับการติดตั้ง staging และหากตั้งชื่อproduction-config.php
ไว้ มันช่วยให้ฉันมีค่าที่แตกต่างกันของค่าคงที่บางอย่างเช่นการดีบักมีค่าแตกต่างกันภายใต้สภาพแวดล้อมที่แตกต่างกันและยังมีทุกอย่างภายใต้ SCM (git) ความเป็นไปได้ไม่มีที่สิ้นสุดและไม่จำเป็นต้องแฮ็กเกอร์สำหรับสภาพแวดล้อมที่แตกต่างกัน
สิ่งนี้ทำให้แน่ใจว่าคุณจะไม่เปิดเผยข้อมูลที่ละเอียดอ่อนใด ๆ ต่อสาธารณะและฉันใช้สิ่งนี้เพื่อเริ่มโครงการใด ๆ ที่ฉันทำงานอยู่ฉันมีคีย์ที่แข็งแรงกว่าโดยค่าเริ่มต้นและทันทีที่ฉันเพิ่มลงในไฟล์ config ที่สองหนึ่งไดเรกทอรีด้านบน สิ่งเหล่านี้จะถูกใช้แทนสิ่งที่กำหนดไว้ที่นี่ บลิส!