nxt_php_sapi.c (86:3b77edf46701) nxt_php_sapi.c (94:48a31f768f5e)
1
2/*
3 * Copyright (C) Max Romanov
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include "php.h"

--- 122 unchanged lines hidden (view full) ---

131nxt_inline nxt_int_t nxt_php_write(nxt_php_run_ctx_t *ctx,
132 const u_char *data, size_t len,
133 nxt_bool_t flush, nxt_bool_t last);
134
135
136static nxt_str_t nxt_php_path;
137static nxt_str_t nxt_php_root;
138static nxt_str_t nxt_php_script;
1
2/*
3 * Copyright (C) Max Romanov
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include "php.h"

--- 122 unchanged lines hidden (view full) ---

131nxt_inline nxt_int_t nxt_php_write(nxt_php_run_ctx_t *ctx,
132 const u_char *data, size_t len,
133 nxt_bool_t flush, nxt_bool_t last);
134
135
136static nxt_str_t nxt_php_path;
137static nxt_str_t nxt_php_root;
138static nxt_str_t nxt_php_script;
139static nxt_str_t nxt_php_index_name = nxt_string("index.php");
139
140
141nxt_application_module_t nxt_php_module = {
142 nxt_php_init,
143 nxt_php_prepare_msg,
144 nxt_php_run
145};
146

--- 85 unchanged lines hidden (view full) ---

232
233
234static nxt_int_t
235nxt_php_read_request(nxt_task_t *task, nxt_app_rmsg_t *rmsg,
236 nxt_php_run_ctx_t *ctx)
237{
238 u_char *p;
239 size_t s;
140
141
142nxt_application_module_t nxt_php_module = {
143 nxt_php_init,
144 nxt_php_prepare_msg,
145 nxt_php_run
146};
147

--- 85 unchanged lines hidden (view full) ---

233
234
235static nxt_int_t
236nxt_php_read_request(nxt_task_t *task, nxt_app_rmsg_t *rmsg,
237 nxt_php_run_ctx_t *ctx)
238{
239 u_char *p;
240 size_t s;
241 nxt_str_t script_name;
240 nxt_app_request_header_t *h;
241
242 h = &ctx->r.header;
243
244 nxt_app_msg_read_str(task, rmsg, &h->method);
245 nxt_app_msg_read_str(task, rmsg, &h->path);
246 h->path_no_query = h->path;
247

--- 4 unchanged lines hidden (view full) ---

252 h->query.length = h->path.length - s;
253
254 if (s > 0) {
255 h->path_no_query.length = s - 1;
256 }
257 }
258
259 if (nxt_php_path.start == NULL) {
242 nxt_app_request_header_t *h;
243
244 h = &ctx->r.header;
245
246 nxt_app_msg_read_str(task, rmsg, &h->method);
247 nxt_app_msg_read_str(task, rmsg, &h->path);
248 h->path_no_query = h->path;
249

--- 4 unchanged lines hidden (view full) ---

254 h->query.length = h->path.length - s;
255
256 if (s > 0) {
257 h->path_no_query.length = s - 1;
258 }
259 }
260
261 if (nxt_php_path.start == NULL) {
260 ctx->script.length = nxt_php_root.length + h->path_no_query.length;
262 if (h->path_no_query.start[h->path_no_query.length - 1] == '/') {
263 script_name = nxt_php_index_name;
264 } else {
265 script_name.length = 0;
266 }
267
268 ctx->script.length = nxt_php_root.length + h->path_no_query.length +
269 script_name.length;
261 ctx->script.start = nxt_mp_nget(ctx->mem_pool,
262 ctx->script.length + 1);
263
264 p = ctx->script.start;
265
266 nxt_memcpy(p, nxt_php_root.start, nxt_php_root.length);
267 p += nxt_php_root.length;
270 ctx->script.start = nxt_mp_nget(ctx->mem_pool,
271 ctx->script.length + 1);
272
273 p = ctx->script.start;
274
275 nxt_memcpy(p, nxt_php_root.start, nxt_php_root.length);
276 p += nxt_php_root.length;
277
268 nxt_memcpy(p, h->path_no_query.start, h->path_no_query.length);
278 nxt_memcpy(p, h->path_no_query.start, h->path_no_query.length);
269 p[h->path_no_query.length] = '\0';
279 p += h->path_no_query.length;
280
281 if (script_name.length > 0) {
282 nxt_memcpy(p, script_name.start, script_name.length);
283 p += script_name.length;
284 }
285
286 p[0] = '\0';
270 } else {
271 ctx->script = nxt_php_path;
272 }
273
274 nxt_app_msg_read_str(task, rmsg, &h->version);
275
276 nxt_app_msg_read_str(task, rmsg, &h->cookie);
277 nxt_app_msg_read_str(task, rmsg, &h->content_type);
278 nxt_app_msg_read_str(task, rmsg, &h->content_length);
279
280 nxt_app_msg_read_size(task, rmsg, &s);
281 h->parsed_content_length = s;
282
287 } else {
288 ctx->script = nxt_php_path;
289 }
290
291 nxt_app_msg_read_str(task, rmsg, &h->version);
292
293 nxt_app_msg_read_str(task, rmsg, &h->cookie);
294 nxt_app_msg_read_str(task, rmsg, &h->content_type);
295 nxt_app_msg_read_str(task, rmsg, &h->content_length);
296
297 nxt_app_msg_read_size(task, rmsg, &s);
298 h->parsed_content_length = s;
299
300 nxt_app_msg_read_str(task, rmsg, &ctx->r.body.preread);
301
283 /* Further headers read moved to nxt_php_register_variables. */
284 return NXT_OK;
285}
286
287
288static nxt_int_t
289nxt_php_prepare_msg(nxt_task_t *task, nxt_app_request_t *r,
290 nxt_app_wmsg_t *wmsg)

--- 38 unchanged lines hidden (view full) ---

329 // DOCUMENT_ROOT
330
331 NXT_WRITE(&h->cookie);
332 NXT_WRITE(&h->content_type);
333 NXT_WRITE(&h->content_length);
334
335 RC(nxt_app_msg_write_size(task, wmsg, h->parsed_content_length));
336
302 /* Further headers read moved to nxt_php_register_variables. */
303 return NXT_OK;
304}
305
306
307static nxt_int_t
308nxt_php_prepare_msg(nxt_task_t *task, nxt_app_request_t *r,
309 nxt_app_wmsg_t *wmsg)

--- 38 unchanged lines hidden (view full) ---

348 // DOCUMENT_ROOT
349
350 NXT_WRITE(&h->cookie);
351 NXT_WRITE(&h->content_type);
352 NXT_WRITE(&h->content_length);
353
354 RC(nxt_app_msg_write_size(task, wmsg, h->parsed_content_length));
355
356 NXT_WRITE(&r->body.preread);
357
337 nxt_list_each(field, h->fields) {
338 RC(nxt_app_msg_write_prefixed_upcase(task, wmsg,
339 &prefix, &field->name));
340 NXT_WRITE(&field->value);
341
342 } nxt_list_loop;
343
344 /* end-of-headers mark */
345 NXT_WRITE(&eof);
358 nxt_list_each(field, h->fields) {
359 RC(nxt_app_msg_write_prefixed_upcase(task, wmsg,
360 &prefix, &field->name));
361 NXT_WRITE(&field->value);
362
363 } nxt_list_loop;
364
365 /* end-of-headers mark */
366 NXT_WRITE(&eof);
346 NXT_WRITE(&r->body.preread);
347
348#undef NXT_WRITE
349#undef RC
350
351 return NXT_OK;
352
353fail:
354

--- 260 unchanged lines hidden (view full) ---

615
616static char *
617nxt_php_read_cookies(TSRMLS_D)
618{
619 nxt_php_run_ctx_t *ctx;
620
621 ctx = SG(server_context);
622
367
368#undef NXT_WRITE
369#undef RC
370
371 return NXT_OK;
372
373fail:
374

--- 260 unchanged lines hidden (view full) ---

635
636static char *
637nxt_php_read_cookies(TSRMLS_D)
638{
639 nxt_php_run_ctx_t *ctx;
640
641 ctx = SG(server_context);
642
643 nxt_debug(ctx->task, "nxt_php_read_cookies");
644
623 return (char *) ctx->r.header.cookie.start;
624}
625
626
627static void
628nxt_php_register_variables(zval *track_vars_array TSRMLS_DC)
629{
630 nxt_str_t n, v;

--- 93 unchanged lines hidden (view full) ---

724
725 if (h->content_length.start != NULL) {
726 php_register_variable_safe((char *) "CONTENT_LENGTH",
727 (char *) h->content_length.start,
728 h->content_length.length,
729 track_vars_array TSRMLS_CC);
730 }
731
645 return (char *) ctx->r.header.cookie.start;
646}
647
648
649static void
650nxt_php_register_variables(zval *track_vars_array TSRMLS_DC)
651{
652 nxt_str_t n, v;

--- 93 unchanged lines hidden (view full) ---

746
747 if (h->content_length.start != NULL) {
748 php_register_variable_safe((char *) "CONTENT_LENGTH",
749 (char *) h->content_length.start,
750 h->content_length.length,
751 track_vars_array TSRMLS_CC);
752 }
753
732 while ( (rc = nxt_app_msg_read_nvp(task, ctx->rmsg, &n, &v)) == NXT_OK) {
754 while (nxt_app_msg_read_str(task, ctx->rmsg, &n) == NXT_OK) {
733 if (nxt_slow_path(n.length == 0)) {
734 break;
735 }
736
755 if (nxt_slow_path(n.length == 0)) {
756 break;
757 }
758
759 rc = nxt_app_msg_read_str(task, ctx->rmsg, &v);
760 if (nxt_slow_path(rc != NXT_OK)) {
761 break;
762 }
763
737 php_register_variable_safe((char *) n.start,
764 php_register_variable_safe((char *) n.start,
738 (char *) n.start,
739 v.length,
765 (char *) v.start, v.length,
740 track_vars_array TSRMLS_CC);
741 }
766 track_vars_array TSRMLS_CC);
767 }
742
743 ctx->r.body.preread = v;
744}
745
746
747static void
748nxt_php_log_message(char *message
749#ifdef NXT_HAVE_PHP_LOG_MESSAGE_WITH_SYSLOG_TYPE
750 , int syslog_type_int
751#endif
752)
753{
754 return;
755}
768}
769
770
771static void
772nxt_php_log_message(char *message
773#ifdef NXT_HAVE_PHP_LOG_MESSAGE_WITH_SYSLOG_TYPE
774 , int syslog_type_int
775#endif
776)
777{
778 return;
779}