PHP错误备忘录
首先
在学习PHP期间遇到的一起解决耗时错误的解决方法进行总结。
未捕获的错误:调用未定义的函数 ○○(mb函数)。
尝试过的事情 (Shì shì de
-
- 再次尝试设置独自学习PHP的步骤
重新安装XAMPP
修改php.ini文件
重置环境变量PATH并置顶设置
将学习用代码文件复制到htdocs目录中
检查VSCode的settings.json文件
检查扩展功能
进行网络搜索
我检查了环境PATH设置后发现,指定的目标是错误的。
当我将学习用的代码文件复制到htdocs目录中,并从那里执行文件时,结果顺利进行。
※我不知道具体原因。
mb_send_mail():无法连接到位于“localhost”端口25的邮件服务器,请在php.ini中验证您的“SMTP”和“smtp_port”设置,或使用ini_set()在C:\○○下进行设置。
请确认php.ini文件中的”SMTP”和”smtp_port”设置,或使用ini_set()函数进行设置,然后调用mb_send_mail()函数发送邮件。
以下是我試過的事情(1/3):
資料來源:知識問答網站知恵袋
・設定でSMTPサーバにlocalhostを指定しているため、自分のPC上にSMTPサーバが動いていなければエラーになる
・対策
1. 自身の契約しているISPのアドレスまたは利用できるSMTPサーバーの情報を書く
2. 「実際にはメールが飛んで行かない」ダミーのメールサーバを使う
?使い方わからんから別の方法を探す
▼試したこと(2/3)
資料:独習PHP 第4版
1)php.iniの設定を変更する(Windows版)
<変更前>
1)メール送信に利用する文字コードの変更設定
;mbstring.language = Japanese
2)sendmail.exeを有効化
;sendmail_path =
<変更後>
1)
mbstring.language = “Japanese”
2)
sendmail_path = “\”C:\xampp\sendmail\sendmail.exe\” -t”
2)sendmail.iniの設定を変更する(Windows版)
<変更前>
1)SMTPサーバーのホスト名を変更
smtp_server=mail.mydomain.com
2)SMTPサーバーのポート番号
smtp_port=25
3)認証ユーザー名
auth_username=
4)認証パスワード
auth_password=
5)送信元アドレス
force_sender=
<修改后>
1)
smtp服务器=smtp.example.com
2)
smtp端口=587
3)
认证用户名=user01
4)
认证密码=passwd01
5)
强制发送者=user01@example.com
重新启动Apache
– 如果运行示例后能成功收到指定收件人的发送邮件,则表示成功。
如果以参考书中所写的内容为准进行以下代码的执行,会收到以下错误消息。
<?php
$to = 'wings@example.com';
$subject = '独習PHP 改訂版';
$body = "こんにちは、mb_send_mail関数!\nどうですか?";
$headers = "From : user01@example.com\n";
$headers .= "Cc : yamada@example.com\n";
$headers .= "X-Mailer : PHP 8\n";
if (mb_send_mail($to, $subject, $body, $headers)) {
print 'メール送信に成功しました。';
} else {
print 'メール送信に失敗しました。';
}
You must configure the smtp_server and default_domain in:
C:\xampp\sendmail\sendmail.ini
or
HKLM\Software\Sendmail
/// 和訳
smtp_serverとdefault_domainを設定する必要があります。
?書籍にある事をそのまま実行していた為、自身の環境に合わせていない。各変更項目の確認を再度行う必要がありそう。
只需要一个选项:
▼尝试的事情(3/3)
确认在“▼尝试的事情(2/2)”中更改的设置项
目标:想使用自己的Gmail给自己发送邮件
資料:使用Gmail的SMTP服务器免费发送邮件的方法
进行与Gmail相适应的更改。
<修改前(sendmail.ini)>
1)
smtp_server=smtp.example.com
2)
smtp_port=587
3)
auth_username=user01
4)
auth_password=passwd01
5)
force_sender=user01@example.com
<修改后(sendmail.ini)>
1)
smtp_server=smtp.example.com
2)
smtp_port=587
3)
auth_username=user01
4)
auth_password=passwd01
5)
force_sender=user01@example.com
<变更前后>
1)Gmail默认的服务器地址
smtp_server=smtp.gmail.com
2)Gmail的SMTP端口
smtp_port=587
3)电子邮件地址
auth_username=you@gmail.com
4)登录密码或应用程序密码
auth_password=passwd01
?如果使用登录密码,则会收到以下错误消息:“发送中出现错误:需要应用程序特定密码。”因此,需要设置应用程序密码并粘贴代替。
5)电子邮件地址
force_sender=you@gmail.com
?当我重新设定并执行时,处理顺利完成了!
<?php
$to = 'you@gmail.com';
$subject = '独習PHP 改訂版';
$body = "こんにちは、mb_send_mail関数!\nどうですか?";
$headers = "From : you@gmail.com";
if (mb_send_mail($to, $subject, $body, $headers)) {
print 'メール送信に成功しました。';
} else {
print 'メール送信に失敗しました。';
}
// 結果
//メール送信に成功しました。