因爲某些緣由,不能讓用戶進行註冊,只能有運營人員手動添加用戶,單個添加用戶比較麻煩,所以選擇使用上傳文件的形式來批量生成用戶,可是上傳用戶在不給定 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