During installation of Silverstripe 2.2.3, I received the following warning:
Check that the php.ini setting allow_call_time_pass_reference is on
allow_call_time_pass_reference is set to '' in php.ini. You can install with allow_call_time_pass_reference not set, but some warnings may get displayed. For best results, turn it on.
Interestingly, this is the information from php.net about this directive...
allow_call_time_pass_reference boolean
Whether to warn when arguments are passed by reference at function call time. This method is deprecated and is likely to be unsupported in future versions of PHP/Zend. The encouraged method of specifying which arguments should be passed by reference is in the function declaration. You're encouraged to try and turn this option Off and make sure your scripts work properly with it in order to ensure they will work with future versions of the language (you will receive a warning each time you use this feature).
Passing arguments by reference at function call time was deprecated for code cleanliness reason. Function can modify its argument in undocumented way if it didn't declared that the argument is passed by reference. To prevent side-effects it's better to specify which arguments are passed by reference in function declaration only.
So, it appears that the php developers recommend against the use of this directive as it is deprecated, however Silverstripe uses it. What's the likelihood that when this directive is unsupported (for reasons of code cleanliness), Silverstripe will have issues?
I'm *very* surprised that I saw this warning during the installation of Silverstripe - this directive was deprecated because it wasn't a good way to pass arguments to a function, a much better way is (as mentioned in the php team response) to pass them by reference in a function declaration.