admin管理员组文章数量:1313001
It's possible to move wp-config.php up one directory level for security, i.e. into the directory above public_html (sometimes called home or a user name, depending on the web host).
"You can move the wp-config.php file to the directory above your WordPress install", according to .php And I have done that with one WP sites' wp-config.php file.
But how does one do that with multiple WP sites in their own folders in public_html? Is there a way to rename multiple wp-config.php files - something like wp-config1.php and wp-config2.php, etc. - in the home directory for each different WP site? And use .htaccess or some other method to enable each WP install to find its own wp-config.php file?
One solution I guess is Multisite, but that's not possible in this case.
It's possible to move wp-config.php up one directory level for security, i.e. into the directory above public_html (sometimes called home or a user name, depending on the web host).
"You can move the wp-config.php file to the directory above your WordPress install", according to http://codex.wordpress/Hardening_WordPress#Securing_wp-config.php And I have done that with one WP sites' wp-config.php file.
But how does one do that with multiple WP sites in their own folders in public_html? Is there a way to rename multiple wp-config.php files - something like wp-config1.php and wp-config2.php, etc. - in the home directory for each different WP site? And use .htaccess or some other method to enable each WP install to find its own wp-config.php file?
One solution I guess is Multisite, but that's not possible in this case.
Share Improve this question edited Feb 13, 2012 at 21:22 markratledge asked Feb 13, 2012 at 18:07 markratledgemarkratledge 8,7356 gold badges40 silver badges62 bronze badges 5 |4 Answers
Reset to default 1Use one main wp-config.php
and name the others according to the name of the host:
- example.config.php
- example.config.php
- and so on.
In your main wp-config.php
write:
$current_config = __DIR__ . '/' . $_SERVER['HTTP_HOST'] . '.config.php';
if ( file_exists( $current_config ) )
require_once $current_config;
Sterling's method above was very attractive because the code was so simple but it didn't work for me. Fuxia's method assumed different domain names which wasn't in my case. My case is multiple WP installs/instances under one domain name. So I combined both their methods and came up with the following which worked for me:
Copy all the wp-config.php files to outside your web root folder (the directory above public_html), then rename them to something like mysite-wp-config.php and then inside the actual installs, you can have a file called wp-config.php then do this inside that file:
<?php
$current_config = '/pathtoconfigfile/mysite-wp-config.php'; if ( file_exists(
$current_config ) ) require_once $current_config;
?>
Hope that helps somebody.
There are two ways to do this. From your question, it sounds like you have this structure currently:
/home
... /public_html
... ... wp-config.php <- for site1
... ... /site1
... ... ... /wp-admin
... ... ... /wp-content
... ... ... /wp-includes
... ... /site2
... ... ... /wp-admin
... ... ... /wp-content
... ... ... /wp-includes
... ... ... wp-config.php <- for site2
And what you want to do is also move the wp-config.php
file for your other sites out of the site root as well. You're correct in pointing out that this will lead to some conflicts because every site will try to include wp-config.php
but can't all use the same one.
The bigger problem is that there is no way to use wp-config.site1.php
or wp-config1.php
or any other variation to keep things separate without hacking core.
If you take a look at the code in wp-load.php
you'll see this:
if ( file_exists( ABSPATH . 'wp-config.php') ) {
/** The config file resides in ABSPATH */
require_once( ABSPATH . 'wp-config.php' );
} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
/** The config file resides one level above ABSPATH but is not part of another install*/
require_once( dirname(ABSPATH) . '/wp-config.php' );
}
WordPress will only look one directory past its current location and will only look for wp-config.php
.
Your best bet would be to push everything up one level further to give yourself some separation. Then point your Apache vhosts file at the new folder locations. So set your directory structure up like this:
/home
... /public_html
... ... /site1
... ... ... wp-config.php <- for site1
... ... ... /wordpress
... ... ... ... /wp-admin
... ... ... ... /wp-content
... ... ... ... /wp-includes
... ... /site2
... ... ... wp-config.php <- for site2
... ... ... /wordpress
... ... ... ... /wp-admin
... ... ... ... /wp-content
... ... ... ... /wp-includes
Your vhosts file will then point www.site1
to /home/public_html/site1/wordpress
instead of /home/public_html/site
. Yes, it's a bit more convoluted, but the only way you can avoid this issue.
You could do this:
Copy all the wp-config.php files into the level above the installs, then rename them to something like mysite-wp-config.php and then inside the actual installs, you can have a file called wp-config.php then do this inside that file:
<?php
include_once(‘/pathtoconfigfile/mysite-wp-config.php’);
?>
This is a theory, I have not tested it.
本文标签: Multiple wpconfigphp files in one home directory
版权声明:本文标题:Multiple wp-config.php files in one home directory 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741831329a2399949.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
wp-config.php
file through the browser anyway ... – EAMann Commented Feb 13, 2012 at 18:15wp-config.php
to the same level as/wp-includes
... not to the level of/home
below/public_html
. You're moving things in the opposite direction. – EAMann Commented Feb 13, 2012 at 19:02