mail-send-failure
靶子 容器=wt_h8_tp8(端口 20098)
=== T0 · 前置:投毒生效(不生效的话下面每一条都在验"发信成功",方向正好相反) ===
PASS smtp_host 已被临时改成 127.0.0.1
[think\db\exception\PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist
Exception trace:
() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
app\CorpDb::base() at /var/www/html/app/common.php:3031
corpCount() at Standard input code:1
[think\db\exception\PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist
Exception trace:
() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
app\CorpDb::base() at /var/www/html/app/common.php:2992
corpSelect() at Standard input code:1
=== T1 · 换绑链(登录后):发信失败必须据实报错 ===
PASS 响应 info==0(不再无条件 success)
PASS 文案是「验证码发送失败…」
PASS 没发出去就不写验证码缓存(不给用户一枚永远等不到的码)
=== T2 · 🔴 _send_mail 自己留下了观察点 ===
[think\db\exception\PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist
Exception trace:
() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
app\CorpDb::base() at /var/www/html/app/common.php:3031
corpCount() at Standard input code:1
FAIL jnc_log 多了「_send_mail 发信失败」行(NaN → NaN)
[Error]
Undefined constant "NaN"
Exception trace:
() at Standard input code:1
FAIL 日志内容是发信失败(且是本次运行新产生的行) → (本次没有新行)
FAIL 记了收件**域名**(排障要的那半) →
FAIL 🔴 没记收件人本地部分(PII 不进 jnc_log) → (本次没有新行)
=== T5 · 🔴 守卫:找回密码链**仍然**回统一文案(刻意的不对称,别改齐) ===
PASS 匿名链响应仍是 info==1 的统一文案
PASS T5 前置:取得到服务端那句统一文案(取不到的话下面这条会恒真)
PASS 🔴 没有把发信失败告诉匿名调用方,回的就是那句统一文案(否则开一条枚举通道)
[think\db\exception\PDOException]
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist
Exception trace:
() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
app\CorpDb::base() at /var/www/html/app/common.php:3031
corpCount() at Standard input code:1
FAIL 但运维侧照样看得到:jnc_log 又多一行(NaN → NaN)
=== T7 · 还原 ===
PASS smtp_host 已从库里重载回真值
=== T6/T8 · 守卫:还原后两条链都能正常发出(防把发信改成恒失败) ===
PASS 换绑链恢复正常(真发 1 封)
PASS 找回密码链恢复正常(真发 1 封)
PASS 10 FAIL 5