PHPをコマンドラインで実行するとエラーになる。
Q&A
Closed
こちらで質問する問題か微妙なのですが、一応確認させてください。
夜間にリマインドメールを送る機能を実装するべく、ソースを用意してコマンドライン(DOSプロンプト)での実行テストを試みましたが、実行することなく、「このアプリはお使いのPCでは実行できません」のエラーになります。
(Windowsのエラー。)
管理者として実行しても、管理者権限でPCログインし直して実行しても同様の現象でした。
検索してみたところ、このエラーの原因は多岐に渡るようで、原因を探るのが難しいようです。
問題の切り分けのために、テキストファイル、WORDのファイル、Excelのファイルをコマンドラインで実行してみましたが、こちらは問題なくできました。
ということは、php側に何か問題があるのでしょうか。
もし同じ問題に直面して解決した経験のある方がいらっしゃいましたら、対策をご教示いただければ幸いです。
念のため、実行を試みたソースを添付します。
<?php
declare(strict_types=1);
mb_language('Japanese');
mb_internal_encoding('UTF-8');
function encodeHeader($value) {
return mb_encode_mimeheader(
mb_convert_encoding($value, 'ISO-2022-jp', 'UTF-8'),
'ISO-2022-jp',
'B'
);
}
require_once('db_connect.php');
require_once('password_db.php');
$sql = ("select
contact_date,
convert(AES_DECRYPT(UNHEX(mail_address), '" . $password . "')USING utf8),
contact_cont
from contact where date(contact_date) <= date_sub(current_date,interval 2 day) and anser_div = :anser_div");
$stmt = $pdo->prepare($sql);
$stmt -> bindValue(':anser_div', 0);
$stmt -> execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $data){
$contactDate = $data['contact_date'];
$mailAddress = $data["convert(AES_DECRYPT(UNHEX(mail_address), '" . $password . "')USING utf8)"];
$contactCont = $data['contact_cont'];
$from = 'mail_adress';
$to = $mailAddress;
$subject = '問い合わせ督促メール';
$body = <<< BODY
下記の質問が未回答です。
回答をお願いします。
1.質問日
{escape($contactDate)}
2.メールアドレス
{escape($mailAddress)}
3.問い合わせ内容
{escape($contactCont)}
BODY;
$sender = encodeHeader('Salon');
$header = <<< HEADER
From: {$sender}<{$from}>
Reply-To: {$from}
HEADER;
$isMailSent = mb_send_mail($to,$subject,$body,$header);
echo $isMailSent ? 'メール送信しました。':'メール送信失敗しました。';
echo PHP_EOL;
}
?>
コマンドの内容
cd C:\xampp\php
C:\xampp\php\php.exe -f C:\xampp\htdocs\Portfolio\contact_remind_mail.php