因为某些缘由,不能让用户进行注册,只能有运营人员手动添加用户,单个添加用户比较麻烦,所以选择使用上传文件的形式来批量生成用户,可是上传用户在不给定 password 字段时,应该生成密码并通知用户,可是最终结果是生成用户成功了,邮件并无发出(邮件服务器已正确配置,除了上传用户没法发送邮件外,其它添加用户或者忘记密码等操做均可以发送邮件),进过近一个星期对 moodle 源码的研究,终于找到 问题所在并解决,特此记录,望接下来遇到此问题的伙伴能尽快解决此问题!
简介来自百度百科php
Moodle(Modular Object-Oriented Dynamic Learning Environment)是一个用于制做网络课程或网站的软件包。它是一个全球性的开发项目,用以支持社会建构主义(social constructionist)的教育框架。Moodle是一个自由的开源软件 (在GNU 公共许可协议下),也就是说Moodle是有版权的,可是你有额外的自由。你能够自由地复制、使用或者修改Moodle,前提条件是你赞成:为他人提供代码,没有修改或删除原有的版权和许可,以及将类似的版权应用于衍生的做品。
PHP
、MySQL
等和moodle官网安装推荐一致,服务器路径也一致锁定问题文件git
moodle
目录下 admin/tool/uploaduser/index.php
锁定问题所在位置github
滚动到831行
左右,找到以下代码:apache
if ($user->password === 'to be generated') { set_user_preference('create_password', 1, $user); }
解决问题服务器
将以上代码替换成以下代码:网络
if ($user->password === 'to be generated') { setnew_password_and_mail($user); unset_user_preference('create_password', $user); set_user_preference('auth_forcepasswordchange', 1, $user); }
发送帐号密码邮件
,在清除已设置的密码
,最后设置用户登陆时强制修改密码
。目前在本地和线上测试上传单个或多个用户都能正常发送邮件,目的算是达到了! 解决此问题花费了很多时间,也怪笔者对 PHP 只能算是个半吊子,还未正式开发过 PHP 项目 所以走了很多弯路,可是最后问题获得解决,甚感欣慰!
*
友情提示: 更改线上环境或测试环境代码后,记得重启服务器,例如当前环境就执行:service apache2 restart