[prev in list] [next in list] [prev in thread] [next in thread]
List: php-general
Subject: Re: [PHP] php mail function not work from apache,but work well from command line
From: Richard <replies-lists-e7x6-php () listmail ! innovate ! net>
Date: 2015-08-24 2:26:11
Message-ID: 712D6CFB4F65B4C47F6E771F () ritz ! innovate ! net
[Download RAW message or body]
Are you certain you are on/hitting the same machine for your php CLI
script run and your browser instance? E.g., are you seeing http
access_log entries for the "test_mail.php" browser attempt on the
same machine where you are seeing maillog entries for your
(successful) CLI runs?
I don't have a centos-6.5 machine, so it's possible that more is
being logged on my 6.7 machine, but with selinux enabled, I'm
getting 6-7 maillog lines, including:
Aug 23 13:48:28 xxx sendmail[2138]: t7NDmSYo002138:
SYSERR(apache): queueup: cannot create queue file
./qft7NDmSYo002138, euid=48, fd=-1, fp=0x0: Permission denied
for the browser attempts on that script.
What shows in the selinux/config file isn't definitive. Instead of
showing the contents of that file, issue the command "sestatus"
(with no options) to see the various status indicators. You should
see the following:
SELinux status:
SELinuxfs mount:
Current mode:
Mode from config file:
The values shown for first and third lines are the relevant ones for
your system's current status.
By the way, what is shown in the phpinfo() output -- for both the
CLI and browser -- for:
sendmail_path
Path to sendmail
> Date: Monday, August 24, 2015 08:54:24 +0800
> From: Xinhao Zheng <xinhaozheng@gmail.com>
>
> Thanks for your reply.
>
># sestatus -b | grep sendmail
> get nothing
>
># cat /etc/selinux/config
>
># This file controls the state of SELinux on the system.
># SELINUX= can take one of these three values:
># enforcing - SELinux security policy is enforced.
># permissive - SELinux prints warnings instead of enforcing.
># disabled - No SELinux policy is loaded.
> SELINUX=disabled
># SELINUXTYPE= can take one of these two values:
># targeted - Targeted processes are protected,
># mls - Multi Level Security protection.
> SELINUXTYPE=targeted
>
>>>>> If you aren't seeing anything on these (both success and
>>>>> failure) i
> if i try to send email from command line,i do get mail log from
> /var/log/maillog but no if i try to send from browser.
>
>
> On Sun, Aug 23, 2015 at 10:47 PM, Richard wrote:
>> The issue is that when you do this through the CLI you are running
>> as a normal user. When you call this script/page via a browser
>> it's running as the httpd server. On my centos-6.7, php-5.3.3
>> (you should really upgrade) system the latter approach is being
>> blocked by selinux.
>>
>> Did you run the:
>>
>> sestatus -b | grep sendmail
>>
>> command as suggested earlier? When I do I get:
>>
>> httpd_can_sendmail off
>>
>> on my centos system, with selinux "enforcing". When I disable
>> selinux, sending via the browser call to the script works.
>>
>> I.e., there are no bugs here -- just a system configuration issue.
>>
>> If you aren't seeing anything on these (both success and failure)
>> in your maillog I suspect that you aren't looking at the correct
>> log. You need to make certain that you are looking at, and taking
>> actions on, the correct environment.
>>
>> [please **DO NOT** include my email address in your reply. i'm on
>> the list and get the messages just fine that way.]
>>
>>
>> ------------ Original Message ------------
>>> Date: Sunday, August 23, 2015 10:35:35 +0800
>>> From: Xinhao Zheng <xinhaozheng@gmail.com>
>>>
>>> yes.reboot with no luck.
>>>
>>> one more thing,i run apache as reverse proxy,the frontend is
>>> nginx.but i think this has nothing to do with mail function.
>>>
>>> there is no log in apache error log,neither in /var/log/maillog.
>>> so any other idea.
>>> i googled a lot, tweak sendmail config, check the user perm ....
>>>
>>> somebody said this may be a bug in php5.3.28?
>>>
>>>
>>>
>>>
>>> On Sun, Aug 23, 2015 at 10:19 AM, Xinhao Zheng
>>> <xinhaozheng@gmail.com> wrote:
>>>> # cat /etc/redhat-release
>>>> CentOS release 6.5 (Final)
>>>>
>>>>
>> < snip >
>>>>
>>>> i tried chmod 777 to sendmail with no lucky shot. it seems
>>>> apache is not allow to send mail.
>>>>
>>>>
>>>> On Sun, Aug 23, 2015 at 9:56 AM, Aziz Saleh
>>>> <azizsaleh@gmail.com> wrote:
>>>>>
>>>>>
>>>>>
>>>>> On Sat, Aug 22, 2015 at 9:53 PM, Xinhao Zheng
>>>>> <xinhaozheng@gmail.com> wrote:
>>>>>>
>>>>>> i tried that.SElinux is off.
>>>>>> thanks!
>>>>>>
>>>>>> On Sun, Aug 23, 2015 at 9:45 AM, Aziz Saleh
>>>>>> <azizsaleh@gmail.com> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Aug 22, 2015 at 9:31 PM, Xinhao Zheng
>>>>>>> <xinhaozheng@gmail.com> wrote:
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Thanks for help.
>>>>>>>>
>>>>>>>> i am sure they share the same config file.
>>>>>>>> /usr/local/php5.3.28/bin/php --ini shows
>>>>>>>> /usr/local/php5.3.28/etc/php.ini and phpinfo page show same
>>>>>>>> config file
>>>>>>>>
>>>>>>>> yes,i run same file.
>>>>>>>>
>>>>>>>> command line => /usr/local/php5.3.28/bin/php
>>>>>>>> /path/to/webroot/test_mail.php web browser =>
>>>>>>>> http://IP/test_mail.php
>>>>>>>>
>>>>>>>> source code of test_mail.php
>>>>>>>>
>>>>>>>> <?php
>>>>>>>> define('DEBUG_MODE',1);
>>>>>>>> if (defined('DEBUG_MODE') ) {
>>>>>>>> error_reporting(E_ALL);
>>>>>>>> ini_set('display_errors',TRUE);
>>>>>>>> ini_set('error_log','/tmp/log_php');
>>>>>>>> ini_set('log_errors',TRUE);
>>>>>>>> }
>>>>>>>>
>>>>>>>> $message = "Line 1\nLine 2\nLine 3" . date('Y-m-d') . ' unix
>>>>>>>> timestamp ' . time();
>>>>>>>> $message = wordwrap($message, 70);
>>>>>>>> $ok = mail('mail1@mail1.com', 'My Subject' . date('Y-m-d') .
>>>>>>>> ' meeting', $message);
>>>>>>>> var_dump($ok);
>>>>>>>> $ok = mail('mail2@mail2.com', 'My Subject' . date('Y-m-d') .
>>>>>>>> ' meeting', $message);
>>>>>>>> var_dump($ok);
>>>>>>>>
>>>>>>>> ?>
>>>>>>>>
>>>>>>>> On Sun, Aug 23, 2015 at 12:19 AM, Richard wrote:
>>>>>>>>
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > > Date: Saturday, August 22, 2015 09:51:45 -0400
>>>>>>>> > > From: Aziz Saleh <azizsaleh@gmail.com>
>>>>>>>> > >
>>>>>>>> > > On Sat, Aug 22, 2015 at 5:50 AM, Xinhao Zheng
>>>>>>>> > > <xinhaozheng@gmail.com> wrote:
>>>>>>>> > >
>>>>>>>> > >> Hello,
>>>>>>>> > >>
>>>>>>>> > >> i got a prolem.php mail() function can not send
>>>>>>>> > >> email from http request(apache),but it work well if
>>>>>>>> > >> i call it from command line.
>>>>>>>> > >>
>>>>>>>> > >> /usr/local/php5.3.28/bin/php test_mail.php
>>>>>>>> > >> => ok http://ip/test_mail.php =>
>>>>>>>> > >> failed.
>>>>>>>> > >>
>>>>>>>> > >> i check both apache error log and /var/log/maillog,but
>>>>>>>> > >> nothing get there. i am running php5.3.28 over apache
>>>>>>>> > >> as module. with phpinfo and this command,
>>>>>>>> > >> /usr/local/php5.3.28/bin/php --ini , i am sure they use
>>>>>>>> > >> same php config file.i also tried to turn off the
>>>>>>>> > >> iptable,but no lucky shot.
>>>>>>>> > >>
>>>>>>>> > >>
>>>>>>>> > >>
>>>>>>>> > > Use phpinfo() to confirm they are using the same
>>>>>>>> > > configs.
>>>>>>>> >
>>>>>>>> > Are you accessing the same "test_mail.php" page/code in
>>>>>>>> > both cases? If so, I really wouldn't expect it to work as
>>>>>>>> > the environments are totally different.
>>>>>>>> >
>>>>>>>> > Show your code.
>>>>>>>> >
>>>>>>>> > By the way, if you aren't generating a message (nothing in
>>>>>>>> > /var/log/maillog) then mucking with iptables will have no
>>>>>>>> > effect.
>>>>>>>> >
>>>>>>>
>>>>>>> Try running:
>>>>>>>
>>>>>>> sestatus -b | grep sendmail
>>>>>>>
>>>>>>> from command prompt, you are probably using SELinux and have
>>>>>>> httpd_can_sendmail set to off, in which case you can send
>>>>>>> mail via CLI but not Apache.
>>>>>>
>>>>>>
>>>>>
>>>>> I have ran into issues in the past where if I disabled SELinux,
>>>>> I had to restart the server for it to take effect, not sure if
>>>>> it is the same issue on your end, but wouldn't hurt to try if
>>>>> you haven't.
>>
>> ------------ End Original Message ------------
------------ End Original Message ------------
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic