Skip to content

Commit c569274

Browse files
committed
Merge pull request #13 from zelgerj/master
added default override of PHP_SAPI to appserver
2 parents f375e5e + fef14f0 commit c569274

File tree

5 files changed

+55
-16
lines changed

5 files changed

+55
-16
lines changed

build.default.properties

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99

1010
# ---- General Settings ---------------------------------------------------------
1111
php.ext.name = appserver
12+
php.sapi.name = appserver
1213

13-
release.version = 0.1.5
14+
release.version = 0.1.6
1415
release.stability = beta
15-
api.version = 0.1.5
16+
api.version = 0.1.6
1617
api.stability = beta
1718

1819
php.version = 5.5.10

pecl/package2.xml

+17-8
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,23 @@ xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ta
2929
<notes>version-release</notes>
3030
<contents>
3131
<dir name="/">
32-
<file name="LICENSE" role="doc" />
33-
<file name="README" role="doc" />
34-
<file name="config.m4" role="src" />
35-
<file name="config.w32" role="src" />
36-
<file name="appserver.c" role="src" />
37-
<file name="php_appserver.h" role="src" />
38-
<file name="appserver_llist.c" role="src" />
39-
<file name="appserver_llist.h" role="src" />
32+
<file name="LICENSE" role="doc"/>
33+
<file name="README" role="doc"/>
34+
<file name="config.m4" role="src"/>
35+
<file name="config.w32" role="src"/>
36+
<file name="appserver.c" role="src"/>
37+
<file name="php_appserver.h" role="src"/>
38+
<file name="appserver_llist.c" role="src"/>
39+
<file name="appserver_llist.h" role="src"/>
40+
<file name="tests/appserver_001.phpt" role="test"/>
41+
<file name="tests/appserver_002.phpt" role="test"/>
42+
<file name="tests/appserver_003.phpt" role="test"/>
43+
<file name="tests/appserver_004.phpt" role="test"/>
44+
<file name="tests/appserver_005.phpt" role="test"/>
45+
<file name="tests/appserver_006.phpt" role="test"/>
46+
<file name="tests/appserver_007.phpt" role="test"/>
47+
<file name="tests/appserver_008.phpt" role="test"/>
48+
<file name="tests/appserver_009.phpt" role="test"/>
4049
</dir>
4150
</contents>
4251
<dependencies>

src/appserver.c

+21-6
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,6 @@ PHP_MSHUTDOWN_FUNCTION(appserver)
194194

195195
PHP_MINIT_FUNCTION(appserver)
196196
{
197-
zval *const_value, *const_name;
198-
char *sapiname;
199-
200197
REGISTER_INI_ENTRIES();
201198

202199
/* init globals */
@@ -207,8 +204,27 @@ PHP_MINIT_FUNCTION(appserver)
207204

208205
PHP_RINIT_FUNCTION(appserver)
209206
{
210-
char *ptr;
211-
char *str;
207+
char *ptr, *str, *sapiconst = APPSERVER_CONSTANT_PHP_SAPI;
208+
zend_constant *defined;
209+
zval *new_phpsapi;
210+
char *new_phpsapi_name = APPSERVER_SAPI_NAME;
211+
212+
/* create zval for new sapi string */
213+
MAKE_STD_ZVAL(new_phpsapi);
214+
ZVAL_STRING(new_phpsapi, new_phpsapi_name, 1);
215+
216+
/* check if PHP_SAPI const can be found to overwrite cli sapi name to appserver */
217+
if (zend_hash_find(EG(zend_constants), sapiconst, strlen(sapiconst)+1, (void **) &defined) == SUCCESS) {
218+
/* create new constant with new php sapi name */
219+
zend_constant c;
220+
c.value = *new_phpsapi;
221+
c.flags = PHP_USER_CONSTANT;
222+
c.name = zend_strndup(&sapiconst, strlen(sapiconst));
223+
c.name_len = strlen(sapiconst) + 1;
224+
c.module_number = 0;
225+
/* update PHP_SAPI constant in hash table */
226+
zend_hash_update(EG(zend_constants), sapiconst, strlen(sapiconst)+1, (void*)&c, sizeof(zend_constant), (void **)&c);
227+
}
212228

213229
/* remove functions given in ini setting */
214230
ptr = strtok(INI_STR("appserver.remove_constants"), ",");
@@ -219,7 +235,6 @@ PHP_RINIT_FUNCTION(appserver)
219235
ptr = strtok(NULL, ",");
220236
}
221237

222-
223238
/* remove functions given in ini setting */
224239
ptr = strtok(INI_STR("appserver.remove_functions"), ",");
225240
while(ptr != NULL) {

src/php_appserver.h

+2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ extern zend_module_entry appserver_module_entry;
2626
#define phpext_appserver_ptr &appserver_module_entry
2727

2828
#define APPSERVER_NAME "${php.ext.name}"
29+
#define APPSERVER_SAPI_NAME "${php.sapi.name}"
2930
#define APPSERVER_VERSION "${release.version}"
31+
#define APPSERVER_CONSTANT_PHP_SAPI "PHP_SAPI"
3032

3133
#ifdef PHP_WIN32
3234
# define PHP_APPSERVER_API __declspec(dllexport)

src/tests/appserver_009.phpt

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--TEST--
2+
appserver: check if PHP_SAPI is rewritten to appserver
3+
--CREDITS--
4+
Johann Zelger <jz [at] techdivision [dot] com>
5+
--FILE--
6+
<?php
7+
8+
echo PHP_SAPI . "\r\n";
9+
10+
?>
11+
--EXPECT--
12+
appserver

0 commit comments

Comments
 (0)