Greetings list,

I've modified fopen_wrappers.c to add some custom security checks for our environment.

Part of the check requires obtaining the DocumentRoot.

The modification begins at line 115 where the DocumentRoot is found:

// Document root from Zend (pointer to pointer)
zval **document_root = NULL;

// Make sure DOCUMENT_ROOT is accessible from the global vars
if (!PG(http_globals)[TRACK_VARS_SERVER] ||
zend_hash_find(PG(http_globals)[TRACK_VARS_SERVER]->value.ht, "DOCUMENT_ROOT", sizeof("DOCUMENT_ROOT"), (void **) &document_root) == FAILURE) {

        // Unable to find DOCUMENT_ROOT
php_error_docref(NULL TSRMLS_CC, E_WARNING, "fopen_wrapper_patch: DOCUMENT_ROOT variable is not set, cannot determine document root.");

        // Can't check the document root - fail
        return -1;
}

The above code has been works fine in PHP 5.2.6. In PHP 5.2.10 it works except when an .htaccess is defined with the following:

<--BEGIN SNIP .htaccess-->
php_value error_log '/home/st/stu/studio1.com.au/www/logs/php_err.log'
<--END SNIP-->

The above .htaccess works as expected in PHP 5.2.6 when looking up the DOCUMENT_ROOT.

Is there another way to obtain the DOCUMENT_ROOT at this point in the code or has something been introduced into the code since 5.2.6 that is causing a wider issue that needs to be fixed?

Your help would be much appreciated.

Thanks



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to