你好!
由于我的服务器没有本地可用的“sendmail”命令,并且我编写了一个api兼容的替换mail()函数,我该如何实际更换PHP的内置mail()函数? (或其他人;除此之外还有一些需要更换。)
谢谢!
答案 0 :(得分:7)
更换mail
是解决此问题的错误方法。
如果您需要发送邮件,但无法调用mail
命令,那么您应该使用可以使用其他方法的第三方PHP邮件库。经常推荐SwiftMailer。它可以使用mail
,调用任何 sendmail
兼容的二进制文件或直接使用SMTP服务器。此外,由于插件架构,它可以扩展为以任何其他方式发送邮件。
如果您发现自己想要替换PHP内置函数,那么可能是您的代码错误,而不是PHP。当然,一些PHP内置的 suck ,但用你的修改版本替换函数的预期行为会使你的代码的未来维护者想要在你的谋杀中谋杀你睡眠。
答案 1 :(得分:6)
理论上你可以使用APD override_function来做到这一点,但我真的非常建议不要这样做。
有什么理由你不能只是给你的功能一个不同的名称并使用该名称而不是邮件?
如果你绝对坚持,那么http://php.net/manual/en/function.override-function.php
答案 2 :(得分:4)
检查出来:http://php.net/manual/en/function.override-function.php
bool override_function ( string $function_name , string $function_args , string $function_code )
通过在符号表中替换它们来覆盖内置函数。
答案 3 :(得分:2)
runkit_function_redefine()
,但我不会称之为“已批准”的方式,因为不应该这样做。