Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

where does the output of error_log(... ,4)?

31 views
Skip to first unread message

Hostel

unread,
Aug 26, 2020, 12:53:56 PM8/26/20
to
<?php // index.php (http://localhost)
error_log(
'abc123',
4 // message is sent directly to the SAPI logging handler
);

What does it mean message is sent directly to the SAPI logging handler?
Where does the output?

The page http://localhost it displays nothing!!!

J.O. Aho

unread,
Aug 27, 2020, 5:06:34 AM8/27/20
to
On 26/08/2020 18.53, Hostel wrote:
> <?php // index.php (http://localhost)
> error_log(
>     'abc123',
>     4 // message is sent directly to the SAPI logging handler
> );
>
> What does it mean message is sent directly to the SAPI logging handler?
> Where does the output?

The SAPI is a or a collection of interfaces that lies between php and
the web service. One of them will be used to send the error message to
the logger instance, which in most Linux cases would be a syslog service
or journald

> The page http://localhost it displays nothing!!!

error_log do not display anything, it's to send en error log based on
the message_type defined. See
https://www.php.net/manual/en/function.error-log.php

I would suggest you look in your system logs, most likely in
/var/log/messages or /var/log/syslog depending on your distribution,
with systemd/Linux you may also try the run the following command:
journalctl -a


For people who like to pay for a crippled OS, then use the eventvwr

--

//Aho

Arno Welzel

unread,
Aug 30, 2020, 8:21:20 AM8/30/20
to
Hostel:

> <?php // index.php (http://localhost)
> error_log(
> 'abc123',
> 4 // message is sent directly to the SAPI logging handler
> );
>
> What does it mean message is sent directly to the SAPI logging handler?
> Where does the output?

You should find the messages in the error log of your webserver.

Also see: <https://www.php.net/manual/en/function.error-log.php>


--
Arno Welzel
https://arnowelzel.de

Hostel

unread,
Sep 1, 2020, 6:36:31 AM9/1/20
to
Il 30/08/20 14:21, Arno Welzel ha scritto:
mmmhhhhhhh...

var_dump(
ini_set('error_log', 'err.log'),
$file = ini_get('error_log'),
error_log('abc', 4),
file_exists($file)
);

string(0) ""
string(50) "err.log"
bool(true)
bool(false)

Arno Welzel

unread,
Sep 2, 2020, 4:18:42 AM9/2/20
to
Hostel:
Setting the error_log to the name 'err.log' is not enough. This must be
a full path and it must be writable by the user which executes the PHP
script (usually www-data, but that depends on your setup). Otherwise PHP
does not know where to put this file.

Also see
<https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log>

Hostel

unread,
Sep 3, 2020, 10:50:22 AM9/3/20
to
Il 02/09/20 10:18, Arno Welzel ha scritto:
> Setting the error_log to the name 'err.log' is not enough. This must be
> a full path and it must be writable by the user which executes the PHP
> script (usually www-data, but that depends on your setup). Otherwise PHP
> does not know where to put this file.
>
> Also see
> <https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log>

the path is complete.
I removed the initial part for privacy reasons

Arno Welzel

unread,
Sep 4, 2020, 6:41:41 AM9/4/20
to
Hostel:
And the user which runs the PHP script (www-data) has write access to
that path?

Hostel

unread,
Sep 5, 2020, 2:57:31 AM9/5/20
to
Il 04/09/20 12:41, Arno Welzel ha scritto:
ini_set(
'error_log',
__DIR__ . '/err.log'
);

$data = [
"error_log('abc', 4)"
=> error_log('abc', 4),
"file_exists(ini_get('error_log'))"
=> file_exists(ini_get('error_log')),
"is_writable(__DIR__)"
=> is_writable(__DIR__),
];

var_dump($data);

Output:

array(3) {
["error_log('abc', 4)"]=>
bool(true)
["file_exists(ini_get('error_log'))"]=>
bool(false)
["is_writable(__DIR__)"]=>
bool(true)
}

J.O. Aho

unread,
Sep 5, 2020, 6:26:12 AM9/5/20
to
On 05/09/2020 08.57, Hostel wrote:
> Il 04/09/20 12:41, Arno Welzel ha scritto:
>> Hostel:
>>
>>> Il 02/09/20 10:18, Arno Welzel ha scritto:
>>>> Setting the error_log to the name 'err.log' is not enough. This must be
>>>> a full path and it must be writable by the user which executes the PHP
>>>> script (usually www-data, but that depends on your setup). Otherwise
>>>> PHP
>>>> does not know where to put this file.
>>>>
>>>> Also see
>>>> <https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log>
>>>>
>>>
>>> the path is complete.
>>> I removed the initial part for privacy reasons
>>
>> And the user which runs the PHP script (www-data) has write access to
>> that path?
>>
>>
>
> ini_set(
>     'error_log',
>     __DIR__ . '/err.log'
> );
>
> $data = [
>     "error_log('abc', 4)"
>         => error_log('abc', 4),

You are telling the error logging system to use SAPI, this will let the
web service to handle the log, look among your Apache logs.

I think you want to use "error_log('abc', 3)" to redirect the log to
your log file.

If you have full control of the system that the script will be run on, I
think syslog() is better way to log, you can redirect logs based on id
and level to different files and on a high usage site syslog is far
superior when it comes to write to disk than simple file write from php.

Hostel

unread,
Sep 5, 2020, 9:46:13 AM9/5/20
to
Il 05/09/20 12:26, J.O. Aho ha scritto:
>
> You are telling the error logging system to use SAPI, this will let the
> web service to handle the log, look among your Apache logs.

Found it: /var/log/httpd/apache24-error_log

> I think you want to use "error_log('abc', 3)" to redirect the log to
> your log file.
>
> If you have full control of the system that the script will be run on, I
> think syslog() is better way to log, you can redirect logs based on id
> and level to different files and on a high usage site syslog is far
> superior when it comes to write to disk than simple file write from php.

Thanks for the info!!!

Arno Welzel

unread,
Sep 5, 2020, 9:47:39 AM9/5/20
to
Hostel:

> Il 04/09/20 12:41, Arno Welzel ha scritto:
>> Hostel:
>>
>>> Il 02/09/20 10:18, Arno Welzel ha scritto:
>>>> Setting the error_log to the name 'err.log' is not enough. This must be
>>>> a full path and it must be writable by the user which executes the PHP
>>>> script (usually www-data, but that depends on your setup). Otherwise PHP
>>>> does not know where to put this file.
>>>>
>>>> Also see
>>>> <https://www.php.net/manual/en/errorfunc.configuration.php#ini.error-log>
>>>
>>> the path is complete.
>>> I removed the initial part for privacy reasons
>>
>> And the user which runs the PHP script (www-data) has write access to
>> that path?
>>
>>
>
> ini_set(
> 'error_log',
> __DIR__ . '/err.log'
> );
>
> $data = [
> "error_log('abc', 4)"

I hoverlooked this - you say "use SAPI" and not "log to file"!

See <https://www.php.net/manual/en/function.error-log.php>, second
parameter. If you want the log message to go to the file this must be 3
not 4:

error_log('some message', 3);

Ace of diamonds

unread,
Jul 6, 2022, 12:21:17 PM7/6/22
to
Hey guy. Would You want to get rich with me doing programming? If yes, call me !!!!!!!!!

✆☎☏📱📞 : 372 53900660
0 new messages