Browse Source

@ - Added php.ini option "allow_webdav_methods" to allow handling of

@   WebDAV http requests within PHP scripts. (chregu)
# More methods (for DeltaV) will follow.
experimental/new_apache_hooks
Christian Stocker 24 years ago
parent
commit
9495fb9d7d
  1. 12
      main/SAPI.c
  2. 1
      main/main.c
  3. 3
      main/php_globals.h
  4. 13
      sapi/apache/mod_php4.c

12
main/SAPI.c

@ -306,8 +306,16 @@ SAPI_API void sapi_activate(TSRMLS_D)
SG(rfc1867_uploaded_files) = NULL;
if (SG(server_context)) {
if (SG(request_info).request_method
&& !strcmp(SG(request_info).request_method, "POST")) {
if ( SG(request_info).request_method
&& (!strcmp(SG(request_info).request_method, "POST")
|| (PG(allow_webdav_methods)
&& (!strcmp(SG(request_info).request_method, "PROPFIND")
|| !strcmp(SG(request_info).request_method, "PROPPATCH")
|| !strcmp(SG(request_info).request_method, "PUT")
|| !strcmp(SG(request_info).request_method, "MOVE")
|| !strcmp(SG(request_info).request_method, "POST")
|| !strcmp(SG(request_info).request_method, "COPY")
|| !strcmp(SG(request_info).request_method, "LOCK"))))) {
if (!SG(request_info).content_type) {
SG(request_info).content_type_dup = NULL;
if(PG(always_populate_raw_post_data)) {

1
main/main.c

@ -326,6 +326,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN("allow_url_fopen", "1", PHP_INI_ALL, OnUpdateBool, allow_url_fopen, php_core_globals, core_globals)
STD_PHP_INI_BOOLEAN("always_populate_raw_post_data", "0", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, always_populate_raw_post_data, php_core_globals, core_globals)
STD_PHP_INI_BOOLEAN("allow_webdav_methods", "0", PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateBool, allow_webdav_methods, php_core_globals, core_globals)
PHP_INI_END()
/* }}} */

3
main/php_globals.h

@ -139,7 +139,8 @@ struct _php_core_globals {
zend_bool allow_url_fopen;
zend_bool always_populate_raw_post_data;
zend_bool allow_webdav_methods;
};

13
sapi/apache/mod_php4.c

@ -488,11 +488,6 @@ static int send_php(request_rec *r, int display_source_mode, char *filename)
}
zend_first_try {
/* We don't accept OPTIONS requests, but take everything else */
if (r->method_number == M_OPTIONS) {
r->allowed |= (1 << METHODS) - 1;
return DECLINED;
}
/* Make sure file exists */
if (filename == NULL && r->finfo.st_mode == 0) {
@ -503,6 +498,14 @@ static int send_php(request_rec *r, int display_source_mode, char *filename)
if (per_dir_conf) {
zend_hash_apply((HashTable *) per_dir_conf, (apply_func_t) php_apache_alter_ini_entries TSRMLS_CC);
}
/* We don't accept OPTIONS requests, but take everything else */
if (!PG(allow_webdav_methods)) {
if (r->method_number == M_OPTIONS) {
r->allowed |= (1 << METHODS) - 1;
return DECLINED;
}
}
/* If PHP parser engine has been turned off with an "engine off"
* directive, then decline to handle this request

Loading…
Cancel
Save