/*+----------------------------------------------------------------------+| Copyright (c) The PHP Group |+----------------------------------------------------------------------+| This source file is subject to version 3.01 of the PHP license, || that is bundled with this package in the file LICENSE, and is || available through the world-wide-web at the following url: || http://www.php.net/license/3_01.txt || If you did not receive a copy of the PHP license and are unable to || obtain it through the world-wide-web, please send a note to || license@php.net so we can mail you a copy immediately. |+----------------------------------------------------------------------+| Author: Edin Kadribasic <edink@php.net> |+----------------------------------------------------------------------+*/#include "php_embed.h"#include "ext/standard/php_standard.h"#ifdef PHP_WIN32#include <io.h>#include <fcntl.h>#endifconst char HARDCODED_INI[] ="html_errors=0\n""register_argc_argv=1\n""implicit_flush=1\n""output_buffering=0\n""max_execution_time=0\n""max_input_time=-1\n0円";#if defined(PHP_WIN32) && defined(ZTS)ZEND_TSRMLS_CACHE_DEFINE()#endifstatic char* php_embed_read_cookies(void){return NULL;}static int php_embed_deactivate(void){fflush(stdout);return SUCCESS;}static inline size_t php_embed_single_write(const char *str, size_t str_length){#ifdef PHP_WRITE_STDOUTzend_long ret;ret = write(STDOUT_FILENO, str, str_length);if (ret <= 0) return 0;return ret;#elsesize_t ret;ret = fwrite(str, 1, MIN(str_length, 16384), stdout);return ret;#endif}static size_t php_embed_ub_write(const char *str, size_t str_length){const char *ptr = str;size_t remaining = str_length;size_t ret;while (remaining > 0) {ret = php_embed_single_write(ptr, remaining);if (!ret) {php_handle_aborted_connection();}ptr += ret;remaining -= ret;}return str_length;}static void php_embed_flush(void *server_context){if (fflush(stdout)==EOF) {php_handle_aborted_connection();}}static void php_embed_send_header(sapi_header_struct *sapi_header, void *server_context){}static void php_embed_log_message(char *message, int syslog_type_int){fprintf (stderr, "%s\n", message);}static void php_embed_register_variables(zval *track_vars_array){php_import_environment_variables(track_vars_array);}static int php_embed_startup(sapi_module_struct *sapi_module){if (php_module_startup(sapi_module, NULL, 0)==FAILURE) {return FAILURE;}return SUCCESS;}EMBED_SAPI_API sapi_module_struct php_embed_module = {"embed", /* name */"PHP Embedded Library", /* pretty name */php_embed_startup, /* startup */php_module_shutdown_wrapper, /* shutdown */NULL, /* activate */php_embed_deactivate, /* deactivate */php_embed_ub_write, /* unbuffered write */php_embed_flush, /* flush */NULL, /* get uid */NULL, /* getenv */php_error, /* error handler */NULL, /* header handler */NULL, /* send headers handler */php_embed_send_header, /* send header handler */NULL, /* read POST data */php_embed_read_cookies, /* read Cookies */php_embed_register_variables, /* register server variables */php_embed_log_message, /* Log message */NULL, /* Get request time */NULL, /* Child terminate */STANDARD_SAPI_MODULE_PROPERTIES};/* }}} *//* {{{ arginfo ext/standard/dl.c */ZEND_BEGIN_ARG_INFO(arginfo_dl, 0)ZEND_ARG_INFO(0, extension_filename)ZEND_END_ARG_INFO()/* }}} */static const zend_function_entry additional_functions[] = {ZEND_FE(dl, arginfo_dl){NULL, NULL, NULL}};EMBED_SAPI_API int php_embed_init(int argc, char **argv){zend_llist global_vars;#if defined(SIGPIPE) && defined(SIG_IGN)signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE in standalone mode sothat sockets created via fsockopen()don't kill PHP if the remote sitecloses it. in apache|apxs mode apachedoes that for us! thies@thieso.net20000419 */#endif#ifdef ZTSphp_tsrm_startup();# ifdef PHP_WIN32ZEND_TSRMLS_CACHE_UPDATE();# endif#endifzend_signal_startup();sapi_startup(&php_embed_module);#ifdef PHP_WIN32_fmode = _O_BINARY; /*sets default for file streams to binary */setmode(_fileno(stdin), O_BINARY); /* make the stdio mode be binary */setmode(_fileno(stdout), O_BINARY); /* make the stdio mode be binary */setmode(_fileno(stderr), O_BINARY); /* make the stdio mode be binary */#endifphp_embed_module.ini_entries = malloc(sizeof(HARDCODED_INI));memcpy(php_embed_module.ini_entries, HARDCODED_INI, sizeof(HARDCODED_INI));php_embed_module.additional_functions = additional_functions;if (argv) {php_embed_module.executable_location = argv[0];}if (php_embed_module.startup(&php_embed_module)==FAILURE) {return FAILURE;}zend_llist_init(&global_vars, sizeof(char *), NULL, 0);/* Set some Embedded PHP defaults */SG(options) |= SAPI_OPTION_NO_CHDIR;SG(request_info).argc=argc;SG(request_info).argv=argv;if (php_request_startup()==FAILURE) {php_module_shutdown();return FAILURE;}SG(headers_sent) = 1;SG(request_info).no_headers = 1;php_register_variable("PHP_SELF", "-", NULL);return SUCCESS;}EMBED_SAPI_API void php_embed_shutdown(void){php_request_shutdown((void *) 0);php_module_shutdown();sapi_shutdown();#ifdef ZTStsrm_shutdown();#endifif (php_embed_module.ini_entries) {free(php_embed_module.ini_entries);php_embed_module.ini_entries = NULL;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。