On 02/04/2011 08:44 PM, Thijs Lensselink wrote: > On 02/04/2011 08:38 PM, Steve Staples wrote: >> On Fri, 2011-02-04 at 20:25 +0100, Thijs Lensselink wrote: >>> On 02/04/2011 04:59 PM, Steve Staples wrote: >>>> On Fri, 2011-02-04 at 07:51 -0800, Jim Lucas wrote: >>>>> On 2/4/2011 5:37 AM, Steve Staples wrote: >>>>>> Hello Guys/Gals, >>>>>> >>>>>> it's friday (at least where I am it is) and I have an issue with a >>>>>> script that I just started using again. The problem is, is that it uses >>>>>> the built in PHP mail() function, and on my testing server, mail() >>>>>> doesn't work. The other issue, is that I use SMTP Auth to connect to my >>>>>> mail server, so that when mail sends out, it comes from my mail server >>>>>> so that there is less of a chance for being marked as SPAM. >>>>>> >>>>>> So, what I am looking to do, is use either the trust old Pear::Mail or >>>>>> PHPMailer scripts (I am sure there are other ones out there, but those >>>>>> are the 2 I am most familiar with). >>>>>> >>>>>> So now to my actual question. How can I override the built-in PHP >>>>>> mail() function, to let either of those 2 (or something else someone may >>>>>> suggest) to act in the same manner as the mail() function? >>>>>> >>>>>> Is this easy? I've googled, but haven't seen any reference to doing >>>>>> what I am looking to do (maybe I just can't google) >>>>>> >>>>>> Steve >>>>>> >>>>>> >>>>> >>>>> You cannot "override" a function. You will have to write a new function, >>>>> "my_mail" or some such. Have it take the same arguments as the built in mail >>>>> function, but internally it uses phpmailer or the likes. Then, do a search and >>>>> replace for " mail(" with " my_mail(" >>>>> >>>>> One other possible option, which I had not contemplated until now, would be to >>>>> actually specify a replacement sendmail executable when setting up the sendmail >>>>> option in the php.ini. You could specify a php script that can run as though it >>>>> was sendmail, accept the same arguments, etc... but do all the phpmailer stuff >>>>> inside. >>>>> >>>>> Jim Lucas >>>>> >>>> >>>> after posting this, and doing some more googleing, I found this: >>>> http://ca.php.net/manual/en/function.override-function.php >>>> >>>> it says you can override built-in php functions... I haven't tested to >>>> see if i can do it, but it seems possible... has anyone used this >>>> before? and will it do what I need? (this has been put on the back >>>> burner for today, so tonight I will look more deeper into this unless >>>> someone else has any luck in the mean time) >>>> >>>> TIA! >>>> >>>> Steve >>>> >>>> >>> >>> In PHP versions < 5.3 you need something like runkit or apd. In PHP 5.3 >>> and up you could use monkey patching >>> >>> <?php >>> >>> namespace somenamespace; >>> >>> function mail() { >>> // do something! >>> } >>> >>> >>> You don't actually overwrite the core function but it's close. >>> >>> <?php >>> >>> use somenamespace; >>> >>> mail() // will call the namespaced function >>> >>> \mail() // will call the core function >>> >> >> The reason i was hoping to override the function, was because then if >> the script has updates, then i would need to change all references of >> mail() to my_mail() or if i am not using < 5.3 (and what is runkit or >> apd??) >> >> > > APD is the Advanced PHP Debugger. That reffers to the first link you refers :) > added. And runkit is a PHP extension which allows you to override > functions, classes, etc. > > http://php.net/manual/en/book.runkit.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php