質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Email

Email(電子メール)とは、ネットワークを介してメッセージを送受信するシステム。インターネット上で利用するメールを、Emailと呼ぶ場合が多いです。 インターネットの普及に伴い、現在では一般的なサービスとなっています。文字の他にも、画像、音声、プログラムなどを送受信することが可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

688閲覧

PHPプログラムがコマンド実行は出来るが、PHPサーバ上ではうごかない

BMB-lab

総合スコア1

Email

Email(電子メール)とは、ネットワークを介してメッセージを送受信するシステム。インターネット上で利用するメールを、Emailと呼ぶ場合が多いです。 インターネットの普及に伴い、現在では一般的なサービスとなっています。文字の他にも、画像、音声、プログラムなどを送受信することが可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2グッド

0クリップ

投稿2022/10/31 07:11

前提

実行環境はAWSのLightsail(OSはDebian)です。
SESのメール環境、PHPのメール実行環境は設定済みで
sendmailを手動でコマンド実行するとメールが送れます。

実現したいこと

HTMLを使った基本的なフォーム入力画面から入力された内容をPHPプログラムを使って特定のアドレスにメールで送りたい。

発生している問題・エラーメッセージ

HTMLのform文から下記のPHPプログラムをキックするとmail関数でエラーが発生しブラウザ上には下記のエラーメッセージが表示される。

プログラムの実行に失敗しました

ただし、同じプログラムをコマンドラインから下記のように実行するとメールが送信できる。

 $php test.php

すなわち、コマンドラインでは同じプログラムが正常に動作する。

該当のソースコード

HTML(抜粋)

1<form action="./test.php" method="post"> 2<button type="submit > 3 実行 4</button>

php(test.php)

1<?php 2//$to = $_POST['to']; 3//$title = $_POST['title']; 4//$content = $_POST['content']; 5 6$to = "xxxx@gmail.com"; 7$title = "From Web site"; 8$content = "これはプログラム実行試験です。"; 9if (mail($to, $title, $content)) { 10 echo "プログラムを実行しました"; 11} else { 12 echo "プログラムの実行に失敗しました"; 13}

試したこと

SESのメール環境、PHPのメール実行環境を設定済し、
sendmailを手動でコマンド実行するとメールが送れた。
さらに上記のPHPプログラムを作成しコマンド実行するとメールが送れた。
HTMLのform文からキックすると同じPHPプログラムが実行出来ない。

補足情報(FW/ツールのバージョンなど)

実行環境はAWSのLightsail(OSはDebian)。

yukkuri_55😄を押しています
BMB-lab👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/10/31 07:21

そのhtmlと同じ階層にtest.phpはあるんでしょうか。 サーバーのエラーログも確認してみてください。
guest

回答1

0

ベストアンサー

PHPのmailコマンドは、半完成品の使い物にならない機能の一つで、マニュアルにさえPEARを使うようにアナウンスがされています。(いまどきPEARを使うのもなんですが、そのくらい使えない機能ということ)
curlなどでメールサーバーと通信してメールを送るように作り込んでください

投稿2022/10/31 08:24

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BMB-lab

2022/10/31 21:32

ベストアンサー PHPのmail関数を使う代わりにPEARを使ったら、バッチリ問題が解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問