Question

I have a WordPress plugin that I would like to work on localhost as well as in deployment without modification, but I can't seem to set the location for a directory using one statement.

I would like to do this:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache');

While that works on the web host. On localhost it produces this error:

C:/xampp/htdocs/wp-content/cache/a547b8792c3144c98549be23ef1465e7.spc is not writeable

On localhost, I need to set it to this to get it work:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/mysite/wp-content/cache');

Surely there must be something that works both on localhost and on a web host!

Thanks.

Was it helpful?

Solution

Check this out Determining Plugin and Content Directories WP already has this.

OTHER TIPS

So it looks like the OP would be interested in either the WP_CONTENT_DIR or WP_PLUGIN_DIR predefined constants.

This is for Wordpress installs. But for non-WP situations, I've found the following snippet to be useful:

$docroot = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__))));

This is in similar situations where I've wanted things to work on both a localhost/dev environment and a server environment, where the docroot locations differed. BUT even more important is that this works in the situations where I need to run a PHP file standalone.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top