| Richard A. Quadling 2006-03-29, 3:58 am |
| I've just added a user note.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
One way of achieving a system wide default context is to use the php.ini
setting auto_prepend_file.
By creating a php script which is placed anywhere in the include_dir
paths, you can assign the default context for all streams.
This is of most use when you are behind a firewall and without the
context, stream functions like fopen('http://www.site.com/page.html')
fail as the proxy server rejects the request.
The auto_prepend_file itself can be anything you like.
The sort of things you can include in it are ...
1 - __autoload()
Control the automatic loading of classes on demand. This helps reduce
the amount of loading and memory usage when a script starts.
2 - Global Uncaught Exception Handling
By placing a set_exception_handler() function in this file you can catch
ALL exceptions. A much nicer way than having the page be just an error.
3 - Global error handling
Pretty much the same as 2 really, but for generic PHP errors. Ideally,
these are the things you should engineer out of the code.
4 - Default Stream Context.
As I mentioned, if you are behind a firewall, then having a default
context is EXTREMELY useful. Thanks to tiago at mdtestudio for alerting
me to this function.
The great thing about the auto_prepend_file is that is can be set on a
per directory basis. This means that if you are on a shared host, you
can see the auto_prepend_file setting within your webroot.
There is also auto_append_file which probably has more use for
traditional HTML footers. I've not found a PHP specific reason for this
setting. Yet.=20
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D
I think there are a LOT of functions which could benefit from more
exposure to the auto_prepend_file setting.
When you start using the setting, you are starting to build some
global/default handling mechanisms. If your code is using these
facilities, remember that they are being used when you tell people about
your code. No require_once() in my_sub_class.inc file could give a
newbie a bit of a headache trying to work out how the parent classes are
loaded/defined?
-----Original Message-----
From: tiago at mdtestudio dot com dot br [mailto:phpdoc@lists.php.net]=20
Sent: 29 March 2006 06:09
To: phpdoc@lists.php.net
Subject: [PHP-DOC] #36904 [NEW]: Default Context for Stream
From: tiago at mdtestudio dot com dot br
Operating system: Any
PHP version: Irrelevant
PHP Bug Type: Documentation problem
Bug description: Default Context for Stream
Description:
------------
Hi, I`m coming from this page: =20
http://br.php.net/manual/add-note.p...m-context-get-=
d
efault&redirect=3Dhttp://br.php.net/manual/en/function.stream-context-get=
-
default.php
where I got: "lick here to request a feature, so, here I am !
I think that you could explain on documentation of
stream_context_create or Apendix M how to put a 'default' context at a
CONFIG level.
For example, an ISP creates a fake IP, for example : eth0:1 ->
192.168.0.155 and sets bindto for it ip.
Making this at config level, it could disable stream_context_create
function (for users don't change) and control the TARGET hosts for
FSOCKOPEN, FGETS, ETC via iptables ...
Sorry, I`m new to "reporting" things to you. But I think that it can
help a lot of people, so, I`m writing Here.
--
Edit bug report at http://bugs.php.net/?id=3D36904&edit=3D1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=3D36...3Dtrysnapshot44
Try a CVS snapshot (PHP 5.1):
http://bugs.php.net/fix.php?id=3D36...3Dtrysnapshot51
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=3D36...3Dtrysnapshot60
Fixed in CVS:
http://bugs.php.net/fix.php?id=3D36904&r=3Dfixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=3D36904&r=3Dalreadyfixed
Need backtrace:
http://bugs.php.net/fix.php?id=3D36904&r=3Dneedtrace
Need Reproduce Script:
http://bugs.php.net/fix.php?id=3D36904&r=3Dneedscript
Try newer version:
http://bugs.php.net/fix.php?id=3D36904&r=3Doldversion
Not developer issue:
http://bugs.php.net/fix.php?id=3D36904&r=3Dsupport
Expected behavior:
http://bugs.php.net/fix.php?id=3D36904&r=3Dnotwrong
Not enough info:
http://bugs.php.net/fix.php?id=3D36...3Dnotenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=3D36...Dsubmittedtwice
register_globals:
http://bugs.php.net/fix.php?id=3D36904&r=3Dglobals
PHP 3 support discontinued:
http://bugs.php.net/fix.php?id=3D36904&r=3Dphp3
Daylight Savings: =
http://bugs.php.net/fix.php?id=3D36904&r=3Ddst
IIS Stability:
http://bugs.php.net/fix.php?id=3D36904&r=3Disapi
Install GNU Sed:
http://bugs.php.net/fix.php?id=3D36904&r=3Dgnused
Floating point limitations:
http://bugs.php.net/fix.php?id=3D36904&r=3Dfloat
No Zend Extensions:
http://bugs.php.net/fix.php?id=3D36904&r=3Dnozend
MySQL Configuration Error:
http://bugs.php.net/fix.php?id=3D36904&r=3Dmysqlcfg
|