My preferred solution
There are a couple of ways to do it but the best is to simply find and replace all uses of $_SERVER['DOCUMENT_ROOT']
with a simple function call.
So your example would become:
include(get_my_path() . '/Includes/Connect.php');
Define your current run mode:
define('RUN_MODE_PRODUCTION', true); // in live mode
define('RUN_MODE_PRODUCTION', false); // debug mode
Now for the function definition:
function get_my_path() {
if(RUN_MODE_PRODUCTION === true) {
return '/my/path/';
}
return '/my/other/path';
}
Overriding the actual values in $_SERVER
is bad idea. Should some one else later come to work on the project it will not be clear what is happening.
This is a very simplified version of the bootstrapping of environments that I use in production every day.
Where you can't do it
Another way you can do it
When I setup my mass virtual environment for developing I encountered this issue. See http://blog.simonholywell.com/post/1516566788/team-development-server#virtual_document_root
Because I could not override $_SERVER['DOCUMENT_ROOT']
using either of the above methods I had to do it in an auto_prepend_file
.
I would not recommend that you use this technique to solve this particular issue however as it is better solved at the application level in this case.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…