| <?php |
| /** |
| * Copyright 2007 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| /** |
| * Performs any required initialization before the user's script is run. |
| */ |
| |
| namespace google\appengine\runtime { |
| use google\appengine\ext\session\MemcacheSessionHandler; |
| |
| // Ensure that the class autoloader is the first include. |
| require_once 'google/appengine/runtime/autoloader.php'; |
| require_once 'google/appengine/runtime/Memcache.php'; |
| require_once 'google/appengine/runtime/Memcached.php'; |
| require_once 'google/appengine/api/mail/MailService.php'; |
| |
| // Setup the Memcache session handler |
| MemcacheSessionHandler::configure(); |
| |
| if (!empty($_FILES)) { |
| // TODO: b/13132830: Remove once feature releases. |
| if (ini_get('google_app_engine.direct_file_upload')) { |
| DirectUploadHandler::handle(); |
| } |
| // TODO: b/13132830: Remove once feature releases. |
| if (ini_get('google_app_engine.php_enable_unlink_unused_uploads')) { |
| register_shutdown_function( |
| 'google\appengine\runtime\UnlinkUploads::shutdownHook', $_FILES); |
| UnlinkUploads::removeEmptyFiles($_FILES); |
| } |
| } |
| |
| // Setup the GS stream wrapper |
| $url_flags = STREAM_IS_URL; |
| if (GAE_INCLUDE_REQUIRE_GS_STREAMS === 1) { |
| // By clearing the STREAM_IS_URL flag we allow this stream handler to be |
| // used in include & require calls. |
| $url_flags = 0; |
| } |
| |
| stream_wrapper_register('gs', |
| '\google\appengine\ext\cloud_storage_streams\CloudStorageStreamWrapper', |
| $url_flags); |
| } |
| |
| // Map core PHP function implementations to proper function names. All function |
| // implementations should be prefixed with an underscore. The implementations |
| // should be mapped to the real (un-prefixed) function name and lazy-loaded. |
| // The underscore prefixed functions may then be used for unit testing on an |
| // unmodified PHP interpreter which will not allow functions to be redeclared. |
| // |
| // Additionally due to e2e tests also running on devappserver with an |
| // unmodified PHP interpreter the function definitions must be defined |
| // conditionally and those e2e tests excluded from devappserver. |
| namespace { |
| use google\appengine\runtime\SplOverride; |
| |
| if (!function_exists('gethostname')) { |
| function gethostname() { |
| return SplOverride::gethostname(); |
| } |
| } |
| |
| if (!function_exists('move_uploaded_file')) { |
| function move_uploaded_file($filename, $destination, |
| $context_options = null) { |
| return SplOverride::move_uploaded_file($filename, $destination, |
| $context_options); |
| } |
| } |
| } |