blob: f7f141a80b39837f80385fbf21a26842d5bce9e4 [file] [log] [blame]
<?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);
}
}
}