前两天部署客户的网站时,发现手机支付宝又不能用了,好奇怪,明明修复好了代码(其实我忘了一个事),然后又是500错误不报错,怎么都不能让其报错,后面终于有错误提示出来了。
然后去对应文件看了这行代码:
- $this->load->library('alipaywapsubmit');
于是用FTP去看看system下的library文件夹下有没有“alipaywapsubmit.php”文件,去看了确实有的。那就奇怪了,为何不引入呢?于是乎,我找到了system/engine/loader.php文件看了下,这个版本没有这个方法。看来是版本差异问题。那这就尴尬了。只好自己引入啦。
- //把这一行
- $this->load->library('alipaywapsubmit');
- //替换为这个
- include_once(DIR_SYSTEM.'library/alipaywapsubmit.php');
也就是用PHP系统函数,引入指定文件,DIR_SYSTEM是常量,在config里已经定义了绝对路径,这里拼接地址引入即可。
如果要用这种方式,下面还有个地方要改:
- $this->load->library('alipaywapnotify');
- //改为
- include_once(DIR_SYSTEM.'library/alipaywapnotify.php');
虽然是解决了。但是如果其他插件也因为这个而不兼容怎么办呢?所以我们还是去补充这个方法吧。找到刚才我说的loader.php文件。加入下面代码即可。
- public function library($library) {
- $file = DIR_SYSTEM . 'library/' . $library . '.php';
- if (file_exists($file)) {
- include_once($file);
- } else {
- trigger_error('Error: Could not load library ' . $file . '!');
- exit();
- }
- }
0619更新
本文仅举例说明缺失library的解决方法,但是后面发现异步回调有问题,想起来昨天写这个文章也写了后面“alipaywapnotify”的例子。为了不形成误导,这里说一下:第一个引入可以用加入方法的方式解决。但是下面引入“alipaywapnotify”这个,则不能继续用这个方法。直接用include_one 引入。因为回调这个地方用的是PHP页面,不会走this这个方法,这个页面并不是用OC的一些参数函数来操作。所以下面这一行不应该这样写。(在此感谢TT协助解决异步问题)
拓展
关于异步回调的还有个系统原因:
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助