Re: php mail function not work from apache,but work well from command line
| From: | Xinhao Zheng | Date: | Mon, 24 Aug 2015 00:54:24 +0000 |
| Subject: | Re: php mail function not work from apache,but work well from command line | ||
| References: | 1 2 3 4 5 6 7 8 9 10 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-325068@lists.php.net to get a copy of this message | ||
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
<replies-lists-e7x6-php@listmail.innovate.net> 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 <
>>>>>>> replies-lists-e7x6-php@listmail.innovate.net> 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.
>>>>>>> >
>>>>>>> >
>>>>>>> > --
>>>>>>> > PHP General Mailing List (http://www.php.net/)
>>>>>>> > To unsubscribe, visit:
>>>>>>> > http://www.php.net/unsub.php
>>>>>>> >
>>>>>>> >
>>>>>>
>>>>>>
>>>>>> 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 ------------
>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>