Re: [PHP-CVS] svn: /php/php-src/trunk/ TSRM/TSRM.c TSRM/TSRM.h TSRM/tsrm.m4 Zend/Makefile.am Zend/Zend.m4 Zend/zend.c Zend/zend.h Zend/zend_alloc.c Zend/zend_execute_API.c Zend/zend_hash.c Zend/zend_s

2011-06-03 Thread Christopher Jones


To avoid a bus-factor scenario, it would have been good to keep trunk
NEWS in sync with the code until the merge to 5.4 occurs.

Chris

On 06/02/2011 11:52 PM, Ilia Alshanetsky wrote:

News will be added once this goes into 5.4

On Fri, Jun 3, 2011 at 3:14 AM, Christopher Jones
  wrote:

Ilia,

What about NEWS?

Chris

On 06/02/2011 02:16 PM, Ilia Alshanetsky wrote:


iliaaThu, 02 Jun 2011 21:16:50 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311740

Log:
Zend Signal Handling (see RFC: https://wiki.php.net/rfc/zendsignals)
This needs to go into 5.4 as well, but will wait for Pierre to review
win32 situation

# Patch by Lucas Nealan, Arnaud Le Blanc, Brian Shire&Ilia Alshanetsky

Changed paths:
 U   php/php-src/trunk/TSRM/TSRM.c
 U   php/php-src/trunk/TSRM/TSRM.h
 U   php/php-src/trunk/TSRM/tsrm.m4
 U   php/php-src/trunk/Zend/Makefile.am
 U   php/php-src/trunk/Zend/Zend.m4
 U   php/php-src/trunk/Zend/zend.c
 U   php/php-src/trunk/Zend/zend.h
 U   php/php-src/trunk/Zend/zend_alloc.c
 U   php/php-src/trunk/Zend/zend_execute_API.c
 U   php/php-src/trunk/Zend/zend_hash.c
 A   php/php-src/trunk/Zend/zend_signal.c
 A   php/php-src/trunk/Zend/zend_signal.h
 U   php/php-src/trunk/configure.in
 U   php/php-src/trunk/ext/pcntl/php_signal.c
 U   php/php-src/trunk/ext/standard/info.c
 U
php/php-src/trunk/ext/standard/tests/general_functions/phpinfo.phpt
 U   php/php-src/trunk/main/SAPI.c
 U   php/php-src/trunk/main/main.c




--
Email: christopher.jo...@oracle.com
Tel:  +1 650 506 8630
Blog:  http://blogs.oracle.com/opal/

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php






--
Email: christopher.jo...@oracle.com
Tel:  +1 650 506 8630
Blog:  http://blogs.oracle.com/opal/

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/intl/php_intl.c branches/PHP_5_4/ext/intl/php_intl.c trunk/ext/intl/php_intl.c

2011-06-03 Thread Ilia Alshanetsky
iliaaFri, 03 Jun 2011 18:14:36 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311783

Log:
Show ICU Data version inside phpinfo()

Changed paths:
U   php/php-src/branches/PHP_5_3/ext/intl/php_intl.c
U   php/php-src/branches/PHP_5_4/ext/intl/php_intl.c
U   php/php-src/trunk/ext/intl/php_intl.c

Modified: php/php-src/branches/PHP_5_3/ext/intl/php_intl.c
===
--- php/php-src/branches/PHP_5_3/ext/intl/php_intl.c2011-06-03 17:38:37 UTC 
(rev 311782)
+++ php/php-src/branches/PHP_5_3/ext/intl/php_intl.c2011-06-03 18:14:36 UTC 
(rev 311783)
@@ -651,6 +651,9 @@
php_info_print_table_header( 2, "Internationalization support", 
"enabled" );
php_info_print_table_row( 2, "version", INTL_MODULE_VERSION );
php_info_print_table_row( 2, "ICU version", U_ICU_VERSION );
+#ifdef U_ICU_DATA_VERSION
+   php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION );
+#endif
php_info_print_table_end();

 /* For the default locale php.ini setting */

Modified: php/php-src/branches/PHP_5_4/ext/intl/php_intl.c
===
--- php/php-src/branches/PHP_5_4/ext/intl/php_intl.c2011-06-03 17:38:37 UTC 
(rev 311782)
+++ php/php-src/branches/PHP_5_4/ext/intl/php_intl.c2011-06-03 18:14:36 UTC 
(rev 311783)
@@ -711,6 +711,9 @@
php_info_print_table_header( 2, "Internationalization support", 
"enabled" );
php_info_print_table_row( 2, "version", INTL_MODULE_VERSION );
php_info_print_table_row( 2, "ICU version", U_ICU_VERSION );
+#ifdef U_ICU_DATA_VERSION
+   php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION );
+#endif
php_info_print_table_end();

 /* For the default locale php.ini setting */

Modified: php/php-src/trunk/ext/intl/php_intl.c
===
--- php/php-src/trunk/ext/intl/php_intl.c   2011-06-03 17:38:37 UTC (rev 
311782)
+++ php/php-src/trunk/ext/intl/php_intl.c   2011-06-03 18:14:36 UTC (rev 
311783)
@@ -711,6 +711,9 @@
php_info_print_table_header( 2, "Internationalization support", 
"enabled" );
php_info_print_table_row( 2, "version", INTL_MODULE_VERSION );
php_info_print_table_row( 2, "ICU version", U_ICU_VERSION );
+#ifdef U_ICU_DATA_VERSION
+   php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION );
+#endif
php_info_print_table_end();

 /* For the default locale php.ini setting */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/Zend/tests/function_arguments_001.phpt branches/PHP_5_4/Zend/tests/function_arguments_001.phpt trunk/Zend/tests/function_arguments_001.phpt

2011-06-03 Thread Hannes Magnusson
bjoriFri, 03 Jun 2011 17:38:37 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311782

Log:
Fix tests
#Note to self; do not rename tests just before committing

Changed paths:
U   php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt
U   php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt
U   php/php-src/trunk/Zend/tests/function_arguments_001.phpt

Modified: php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:18:46 UTC (rev 311781)
+++ php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:38:37 UTC (rev 311782)
@@ -5,5 +5,5 @@
 function foo($arg1 string) {}
 ?>
 --EXPECTF--
-Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments_001.php on line %d


Modified: php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:18:46 UTC (rev 311781)
+++ php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:38:37 UTC (rev 311782)
@@ -5,5 +5,5 @@
 function foo($arg1 string) {}
 ?>
 --EXPECTF--
-Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments_001.php on line %d


Modified: php/php-src/trunk/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/trunk/Zend/tests/function_arguments_001.phpt2011-06-03 
17:18:46 UTC (rev 311781)
+++ php/php-src/trunk/Zend/tests/function_arguments_001.phpt2011-06-03 
17:38:37 UTC (rev 311782)
@@ -5,5 +5,5 @@
 function foo($arg1 string) {}
 ?>
 --EXPECTF--
-Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments_001.php on line %d


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/trunk/ext/pcntl/ pcntl.c tests/pcntl_signal.phpt

2011-06-03 Thread Ilia Alshanetsky
iliaaFri, 03 Jun 2011 17:18:46 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311781

Log:
Fixed crash and improved signal validation

Changed paths:
U   php/php-src/trunk/ext/pcntl/pcntl.c
U   php/php-src/trunk/ext/pcntl/tests/pcntl_signal.phpt

Modified: php/php-src/trunk/ext/pcntl/pcntl.c
===
--- php/php-src/trunk/ext/pcntl/pcntl.c 2011-06-03 17:12:59 UTC (rev 311780)
+++ php/php-src/trunk/ext/pcntl/pcntl.c 2011-06-03 17:18:46 UTC (rev 311781)
@@ -849,6 +849,11 @@
return;
}

+   if (signo < 1 || signo > 32) {
+   php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid signal");
+   RETURN_FALSE;
+   }
+
if (!PCNTL_G(spares)) {
/* since calling malloc() from within a signal handler is not 
portable,
 * pre-allocate a few records for recording signals */
@@ -863,9 +868,10 @@
}

/* Special long value case for SIG_DFL and SIG_IGN */
-   if (Z_TYPE_P(handle)==IS_LONG) {
-   if (Z_LVAL_P(handle)!= (long) SIG_DFL && Z_LVAL_P(handle) != 
(long) SIG_IGN) {
+   if (Z_TYPE_P(handle) == IS_LONG) {
+   if (Z_LVAL_P(handle) != (long) SIG_DFL && Z_LVAL_P(handle) != 
(long) SIG_IGN) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid 
value for handle argument specified");
+   RETURN_FALSE;
}
if (php_signal(signo, (Sigfunc *) Z_LVAL_P(handle), (int) 
restart_syscalls) == SIG_ERR) {
PCNTL_G(last_error) = errno;

Modified: php/php-src/trunk/ext/pcntl/tests/pcntl_signal.phpt
===
--- php/php-src/trunk/ext/pcntl/tests/pcntl_signal.phpt 2011-06-03 17:12:59 UTC 
(rev 311780)
+++ php/php-src/trunk/ext/pcntl/tests/pcntl_signal.phpt 2011-06-03 17:18:46 UTC 
(rev 311781)
@@ -28,12 +28,10 @@
 NULL
 bool(true)

-Warning: pcntl_signal(): Invalid value for handle argument specified in %s
-
-Warning: pcntl_signal(): Error assigning signal %s
+Warning: pcntl_signal(): Invalid signal %s
 bool(false)

-Warning: pcntl_signal(): Error assigning signal %s
+Warning: pcntl_signal(): Invalid signal %s
 bool(false)

 Warning: pcntl_signal(): not callable is not a callable function name error in 
%s

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/Zend/tests/function_arguments_001.phpt branches/PHP_5_3/Zend/tests/function_arguments_002.phpt branches/PHP_5_4/Zend/tests/function_arguments_001.phpt bra

2011-06-03 Thread Hannes Magnusson
bjoriFri, 03 Jun 2011 17:12:59 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311780

Log:
Add tests for broken function arguments

Changed paths:
A   php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt
A   php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_002.phpt
A   php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt
A   php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_002.phpt
A   php/php-src/trunk/Zend/tests/function_arguments_001.phpt
A   php/php-src/trunk/Zend/tests/function_arguments_002.phpt

Added: php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt 
(rev 0)
+++ php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #001
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+

Added: php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_002.phpt
===
--- php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_002.phpt 
(rev 0)
+++ php/php-src/branches/PHP_5_3/Zend/tests/function_arguments_002.phpt 
2011-06-03 17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #002
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected '/', expecting ')' in 
%sfunction_arguments_002.php on line %d
+

Added: php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt 
(rev 0)
+++ php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_001.phpt 
2011-06-03 17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #001
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+

Added: php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_002.phpt
===
--- php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_002.phpt 
(rev 0)
+++ php/php-src/branches/PHP_5_4/Zend/tests/function_arguments_002.phpt 
2011-06-03 17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #002
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected '/', expecting ')' in 
%sfunction_arguments_002.php on line %d
+

Added: php/php-src/trunk/Zend/tests/function_arguments_001.phpt
===
--- php/php-src/trunk/Zend/tests/function_arguments_001.phpt
(rev 0)
+++ php/php-src/trunk/Zend/tests/function_arguments_001.phpt2011-06-03 
17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #001
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected T_STRING, expecting ')' in 
%sfunction_arguments.php on line %d
+

Added: php/php-src/trunk/Zend/tests/function_arguments_002.phpt
===
--- php/php-src/trunk/Zend/tests/function_arguments_002.phpt
(rev 0)
+++ php/php-src/trunk/Zend/tests/function_arguments_002.phpt2011-06-03 
17:12:59 UTC (rev 311780)
@@ -0,0 +1,9 @@
+--TEST--
+Argument parsing error #002
+--FILE--
+
+--EXPECTF--
+Parse error: syntax error, unexpected '/', expecting ')' in 
%sfunction_arguments_002.php on line %d
+

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/ext/tokenizer/tokenizer_data.c trunk/ext/tokenizer/tokenizer_data.c

2011-06-03 Thread Hannes Magnusson
On Fri, Jun 3, 2011 at 03:16, Stanislav Malyshev  wrote:
> stas                                     Fri, 03 Jun 2011 01:16:01 +
>
> Revision: http://svn.php.net/viewvc?view=revision&revision=311747
>
> Log:
> and clean the tokenizer too


Are you not actually reverting the previous commits?

There are still some code changes in ext/reflection and zend_compile.c
introduced by the feature.
I have nothing against them, but surely you would want to revert the
original commits to prevent mistakes, rather then go searching the
codebase and rewire it hoping it is enough :)

-Hannes

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/intl/php_intl.c branches/PHP_5_3/ext/intl/tests/intl_icu_version_constant.phpt branches/PHP_5_4/ext/intl/php_intl.c branches

2011-06-03 Thread Hannes Magnusson
It seems the bug reporter preferred the data version.. I'd say include
it too, doesn't hurt atleast :)

-Hannes

On Thu, Jun 2, 2011 at 19:09, Ilia Alshanetsky  wrote:
> The version is already printed in phpinfo(), I am not sure we need to
> bring the data version... What do you think?
>
> On Thu, Jun 2, 2011 at 11:37 AM, Hannes Magnusson
>  wrote:
>> On Wed, Jun 1, 2011 at 18:26, Ilia Alshanetsky  wrote:
>>> iliaa                                    Wed, 01 Jun 2011 16:26:21 +
>>>
>>> Revision: http://svn.php.net/viewvc?view=revision&revision=311714
>>>
>>> Log:
>>> Implemented FR #54561 (Expose ICU Version & ICU Data Version info).
>>>
>>> Bug: http://bugs.php.net/54561 (Assigned) Expose ICU version info
>>>
>>> Changed paths:
>>>    U   php/php-src/branches/PHP_5_3/NEWS
>>>    U   php/php-src/branches/PHP_5_3/ext/intl/php_intl.c
>>>    A   
>>> php/php-src/branches/PHP_5_3/ext/intl/tests/intl_icu_version_constant.phpt
>>>    U   php/php-src/branches/PHP_5_4/ext/intl/php_intl.c
>>>    A   
>>> php/php-src/branches/PHP_5_4/ext/intl/tests/intl_icu_version_constant.phpt
>>>    U   php/php-src/trunk/ext/intl/php_intl.c
>>>    A   php/php-src/trunk/ext/intl/tests/intl_icu_version_constant.phpt
>>>
>>> Modified: php/php-src/branches/PHP_5_3/NEWS
>>> ===
>>> --- php/php-src/branches/PHP_5_3/NEWS   2011-06-01 16:23:43 UTC (rev 311713)
>>> +++ php/php-src/branches/PHP_5_3/NEWS   2011-06-01 16:26:21 UTC (rev 311714)
>>> @@ -90,6 +90,7 @@
>>>  - intl extension:
>>>   . Implemented FR #54540 (Allow loading of arbitrary resource bundles when
>>>     fallback is disabled). (David Zuelke, Stas)
>>> +  . Implemented FR #54561 (Expose ICU version info). (David Zuelke, Ilia)
>>>
>>>  - json extension:
>>>   . Fixed bug #54484 (Empty string in json_decode doesn't reset
>>>
>>> Modified: php/php-src/branches/PHP_5_3/ext/intl/php_intl.c
>>> ===
>>> --- php/php-src/branches/PHP_5_3/ext/intl/php_intl.c    2011-06-01 16:23:43 
>>> UTC (rev 311713)
>>> +++ php/php-src/branches/PHP_5_3/ext/intl/php_intl.c    2011-06-01 16:26:21 
>>> UTC (rev 311714)
>>> @@ -543,6 +543,10 @@
>>>        REGISTER_INI_ENTRIES();
>>>
>>>        REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, 
>>> CONST_CS);
>>> +       REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, 
>>> CONST_PERSISTENT | CONST_CS);
>>> +#ifdef U_ICU_DATA_VERSION
>>> +       REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", 
>>> U_ICU_DATA_VERSION, CONST_PERSISTENT | CONST_CS);
>>> +#endif
>>>
>>
>>
>> Print it in phpinfo() too?
>>
>> -Hannes
>>
>

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] svn: /php/php-src/branches/PHP_5_3/ext/standard/ browscap.c

2011-06-03 Thread Gustavo André dos Santos Lopes
cataphract   Fri, 03 Jun 2011 09:39:45 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311764

Log:
Merge of fix for bug #54918 (r311745, scottmac) to 5.3.

Bug: http://bugs.php.net/54918 (Closed) browscap issues
  
Changed paths:
U   php/php-src/branches/PHP_5_3/ext/standard/browscap.c

Modified: php/php-src/branches/PHP_5_3/ext/standard/browscap.c
===
--- php/php-src/branches/PHP_5_3/ext/standard/browscap.c2011-06-03 
08:58:52 UTC (rev 311763)
+++ php/php-src/branches/PHP_5_3/ext/standard/browscap.c2011-06-03 
09:39:45 UTC (rev 311764)
@@ -334,18 +334,18 @@
 {
char *browscap = INI_STR("browscap");

-   if (browscap && browscap[0]) {
-   if (browscap_read_file(browscap, &global_bdata, 1 TSRMLS_CC) == 
FAILURE) {
-   return FAILURE;
-   }
-   }
-
 #ifdef ZTS
ts_allocate_id(&browscap_globals_id, sizeof(browser_data),
(ts_allocate_ctor)browscap_globals_ctor, NULL);
 #endif
/* ctor call not really needed for non-ZTS */

+   if (browscap && browscap[0]) {
+   if (browscap_read_file(browscap, &global_bdata, 1 TSRMLS_CC) == 
FAILURE) {
+   return FAILURE;
+   }
+   }
+
return SUCCESS;
 }
 /* }}} */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[PHP-CVS] svn: /php/php-src/trunk/ext/pcntl/ php_signal.c

2011-06-03 Thread Ilia Alshanetsky
iliaaFri, 03 Jun 2011 07:00:38 +

Revision: http://svn.php.net/viewvc?view=revision&revision=311749

Log:
Compiler warning fix

Changed paths:
U   php/php-src/trunk/ext/pcntl/php_signal.c

Modified: php/php-src/trunk/ext/pcntl/php_signal.c
===
--- php/php-src/trunk/ext/pcntl/php_signal.c2011-06-03 01:44:37 UTC (rev 
311748)
+++ php/php-src/trunk/ext/pcntl/php_signal.c2011-06-03 07:00:38 UTC (rev 
311749)
@@ -20,6 +20,8 @@

 #include "TSRM.h"
 #include "php_signal.h"
+#include "Zend/zend.h"
+#include "Zend/zend_signal.h"

 /* php_signal using sigaction is derrived from Advanced Programing
  * in the Unix Environment by W. Richard Stevens p 298. */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php