#41192 [Opn]: Per Directory Values only work for one key

2007-04-25 Thread martin at itmission dot com
 ID:   41192
 User updated by:  martin at itmission dot com
 Reported By:  martin at itmission dot com
 Status:   Open
 Bug Type: PHP options/info functions
 Operating System: Windows Server 2003
 PHP Version:  5.2.1
 New Comment:

Possibly noteworthy, the exact same configuration works fine in PHP
5.2.0.


Previous Comments:


[2007-04-26 01:41:12] martin at itmission dot com

I understand that I was wrong to try to make it work with
auto_prepend_file.

When I remove auto_prepend_file and specify only display_errors = on
(PHP_INI_ALL), and change my scripts to ?php phpinfo(); ?, www1 shows
Display Errors: On, and www2 shows Display Errors: off.  Deleting www1
or renaming it to www3 causes www2 to show Display Errors: on.

When I create a fake error, like trying to open a nonexistent file,
www1 displays the error, while www2 does not.



[2007-04-25 20:49:10] [EMAIL PROTECTED]

As documented in http://php.net/configuration.changes the registry keys
do not work with PHP_INI_PERDIR ini values.

You can see which ini value category it belongs to at:
http://php.net/manual/en/ini.php#ini.list

Only those marked PHP_INI_USER or PHP_INI_ALL will work.



[2007-04-25 20:22:57] martin at itmission dot com

Description:

I am trying to configure multiple websites under IIS using ISAPI.  For
each site I would like to configure specific PHP directives.  My
directives only work on the first entry I make (lexicographically, not
chronologically).

Reproduce code:
---
Using Regedit
Add HKLM\Software\PHP\Per Directory
Values\c\inetpub\www1\auto_prepend_file c:\inetpub\www1\include1.php
Add HKLM\Software\PHP\Per Directory
Values\c\inetpub\www2\auto_prepend_file c:\inetpub\www2\include2.php

Files
Create c:\inetpub\www1\include1.php containing ?php echo('1'); ?
Create c:\inetpub\www2\include2.php containing ?php echo('2'); ?
Create c:\inetpub\www1\index.php containing ?php echo('hello'); ?
Create c:\inetpub\www2\index.php containing ?php echo('hello'); ?

IIS
Make the two sites (www1 and www2) and configure PHP on them.

Web Browser
Visit http://www1/index.php
Visit http://www2/index.php


Expected result:

http://www1/index.php:
1hello

http://www2/index.php:
2hello


Actual result:
--
http://www1/index.php:
1hello

http://www2/index.php:
hello

If I delete HKLM\Software\PHP\Per Directory Values\c\inetpub\www1, or
rename it to HKLM\Software\PHP\Per Directory Values\c\inetpub\www3
http://www2/index.php changes:
2hello

However at that point www1 no longer prepends the file.  This is the
case with all directives, not just auto_prepend_file.





-- 
Edit this bug report at http://bugs.php.net/?id=41192edit=1


#41192 [Opn]: Per Directory Values only work for one key

2007-04-25 Thread martin at itmission dot com
 ID:   41192
 User updated by:  martin at itmission dot com
 Reported By:  martin at itmission dot com
 Status:   Open
 Bug Type: PHP options/info functions
 Operating System: Windows Server 2003
 PHP Version:  5.2.1
 New Comment:

I am assuming that it has something to do with the massive change to
registry.c between 5.2.0 and 5.2.1 changelogged as implemented registry
cache that prevent registry lookup on each request. In case of
modification of corresponding registry-tree PHP will reload it
automatic.

Perhaps something in the way it's being cached is not working properly.
 The simpler code of 5.2.0 works as expected (and it hits the registry
with every request, but I can live with that).


Previous Comments:


[2007-04-26 02:13:08] martin at itmission dot com

Possibly noteworthy, the exact same configuration works fine in PHP
5.2.0.



[2007-04-26 01:41:12] martin at itmission dot com

I understand that I was wrong to try to make it work with
auto_prepend_file.

When I remove auto_prepend_file and specify only display_errors = on
(PHP_INI_ALL), and change my scripts to ?php phpinfo(); ?, www1 shows
Display Errors: On, and www2 shows Display Errors: off.  Deleting www1
or renaming it to www3 causes www2 to show Display Errors: on.

When I create a fake error, like trying to open a nonexistent file,
www1 displays the error, while www2 does not.



[2007-04-25 20:49:10] [EMAIL PROTECTED]

As documented in http://php.net/configuration.changes the registry keys
do not work with PHP_INI_PERDIR ini values.

You can see which ini value category it belongs to at:
http://php.net/manual/en/ini.php#ini.list

Only those marked PHP_INI_USER or PHP_INI_ALL will work.



[2007-04-25 20:22:57] martin at itmission dot com

Description:

I am trying to configure multiple websites under IIS using ISAPI.  For
each site I would like to configure specific PHP directives.  My
directives only work on the first entry I make (lexicographically, not
chronologically).

Reproduce code:
---
Using Regedit
Add HKLM\Software\PHP\Per Directory
Values\c\inetpub\www1\auto_prepend_file c:\inetpub\www1\include1.php
Add HKLM\Software\PHP\Per Directory
Values\c\inetpub\www2\auto_prepend_file c:\inetpub\www2\include2.php

Files
Create c:\inetpub\www1\include1.php containing ?php echo('1'); ?
Create c:\inetpub\www2\include2.php containing ?php echo('2'); ?
Create c:\inetpub\www1\index.php containing ?php echo('hello'); ?
Create c:\inetpub\www2\index.php containing ?php echo('hello'); ?

IIS
Make the two sites (www1 and www2) and configure PHP on them.

Web Browser
Visit http://www1/index.php
Visit http://www2/index.php


Expected result:

http://www1/index.php:
1hello

http://www2/index.php:
2hello


Actual result:
--
http://www1/index.php:
1hello

http://www2/index.php:
hello

If I delete HKLM\Software\PHP\Per Directory Values\c\inetpub\www1, or
rename it to HKLM\Software\PHP\Per Directory Values\c\inetpub\www3
http://www2/index.php changes:
2hello

However at that point www1 no longer prepends the file.  This is the
case with all directives, not just auto_prepend_file.





-- 
Edit this bug report at http://bugs.php.net/?id=41192edit=1