Ash www.ashleysheridan.co.uk |
--- Begin Message ---
- To: ash@xxxxxxxxxxxxxxxxxxxx
- Subject: Re: Fwd: php not reading file properly
- From: "sean greenslade" <zootboysean@xxxxxxxxx>
- Date: Fri, 22 Aug 2008 10:13:37 -0400
- Cc: php-general@xxxxxxxxxxxxx
- Delivery-date: Fri, 22 Aug 2008 15:13:38 +0100
- Envelope-to: ash@xxxxxxxxxxxxxxxxxxxx
- In-reply-to: <1219414385.3562.57.camel@xxxxxxxxxxxxxxxxxxxxx>
Yeah, but it wouldn't read access_log.tmp, which wasn't being written to at the time of loading. I think the whole logs folder is restricted from php access.On Fri, Aug 22, 2008 at 10:13 AM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote:
The log file was in the process of being written to as you were trying to read it. It's a bit like trying to look at a quark. By doing so, you've already affected its position. Although, unlike a quark, you can create a copy of the log file ;)
---------- Forwarded message ----------
From: "sean greenslade" <zootboysean@xxxxxxxxx>
To: php-general@xxxxxxxxxxxxx
Date: Fri, 22 Aug 2008 10:04:07 -0400
Subject: Re: Fwd: php not reading file properly
Yeah, I tried changing the perms, and that didn't work. I originally made
the cron job put the temp copy in the same logs folder, but it refused to
open that. I changed it to put the temp copy in the web folder, and it can
read that. I think apache and/or php may have certain restrictions that keep
them from accessing important system folders.
On Fri, Aug 22, 2008 at 3:09 AM, Ashley Sheridan
<ash@xxxxxxxxxxxxxxxxxxxx>wrote:
> You can change the permissions on the file, which I believe you said you
> did. If that didn't work, it must be because you are trying to read from
> the file at the very same instant that Apache is writing to it logging
> that you are trying to access it, if that makes sense?
>
> Ash
> www.ashleysheridan.co.uk
>
>
> ---------- Forwarded message ----------
> From: "sean greenslade" <zootboysean@xxxxxxxxx>
> To: php-general@xxxxxxxxxxxxx
> Date: Fri, 22 Aug 2008 02:31:47 -0400
> Subject: Re: Fwd: php not reading file properly
> So I made a cron jop to copy the log to the web folder every 5 minutes.
> That
> worked fine. It seems that php can't read the /var/log/httpd folder without
> root perms.
>
> On Wed, Aug 20, 2008 at 7:53 PM, Ashley Sheridan
> <ash@xxxxxxxxxxxxxxxxxxxx>wrote:
>
> > Yeah, Apache is still running, but it is the access log you are trying
> > to read, at the same time that you are Apache is being accessed.
> > Accessing the log from the terminal will be fine while Apache is
> > running, as it is unlikely it is being accessed at the very same
> > instant. Are you able to access other files? Also, have you tried
> > copying the file to another temporary version from within PHP an
> > accessing that? If that doesn't work, try executing a Bash script that
> > copies it someplace. Make sure to run the script in the background, and
> > maybe add a sleep period to it so that it doesn't interfere with Apache
> > accessing things.
> >
> > Ash
> > www.ashleysheridan.co.uk
> >
> >
> > ---------- Forwarded message ----------
> > From: "sean greenslade" <zootboysean@xxxxxxxxx>
> > To: "Micah Gersten" <micah@xxxxxxxxxxx>
> > Date: Wed, 20 Aug 2008 19:41:54 -0400
> > Subject: Re: Fwd: php not reading file properly
> > Ashley Sheridan wrote:
> >
> > >As it's the Apache access log that you are trying to read in, are you
> sure
> > that Apache is >not in the process of writing to it as you are
> > attempting to read from it? That might explain >why it seems to be
> empty,
> > although I would have thought it would just append the data to >the end
> of
> > the file, rather than rewriting the whole thing.
> >
> > I dunno. Like I said, I can read it thru the terminal. Apache is still
> > running then.
> >
> > As for Micah's response, that function won't work either.
> >
> > On Wed, Aug 20, 2008 at 7:34 PM, Micah Gersten <micah@xxxxxxxxxxx>
> wrote:
> >
> > > If the directory above it doesn't have execute privileges, it won't be
> > > able to read it either.
> > > Also, why not use the PHP5 function file_get_contents()?
> > >
> > > Thank you,
> > > Micah Gersten
> > > onShore Networks
> > > Internal Developer
> > > http://www.onshore.com
> > >
> > >
> > >
> > > sean greenslade wrote:
> > > > Thanks for the advice. I changed the perms to 777 and changed the
> user
> > > and
> > > > group to apache, but it still won't open.
> > > >
> > > >
> > > > On Wed, Aug 20, 2008 at 3:35 PM, Robbert van Andel <
> > > swimmer1974@xxxxxxxxx>wrote:
> > > >
> > > >
> > > >> Does the user your PHP instance runs as have access to the file?
> It's
> > > >> possible that it runs under a different users depending on if you're
> > > running
> > > >> the script on the terminal or in a web browser. The function fopen
> > will
> > > >> return false if the file fails to open. Find out if $fh is equal to
> > > false.
> > > >> While you're debugging, you might consider changing the display
> errors
> > > >> setting to see what warning fopen generates if the file fails to
> open.
> > > From
> > > >> http://us.php.net/fopen
> > > >> Errors/Exceptions
> > > >>
> > > >> If the open fails, the function an error of level *E_WARNING* is
> > > >> generated. You may use @<
> > > http://us.php.net/manual/en/language.operators.errorcontrol.php>to
> > > suppress this warning.
> > > >>
> > > >>
> > > >> On Wed, Aug 20, 2008 at 12:15 PM, sean greenslade <
> > > zootboysean@xxxxxxxxx>wrote:
> > > >>
> > > >>
> > > >>> I have this snippet of code that is supposed to read the apache
> > access
> > > log
> > > >>> and display it:
> > > >>> <?php
> > > >>> $myFile = "/var/log/httpd/access_log";
> > > >>> $fh = fopen($myFile, 'r');
> > > >>> $theData = fread($fh, filesize($myFile));
> > > >>> fclose($fh);
> > > >>> echo
> > > >>> "This weeks apache log (clears every sunday morning):".
> > > >>> substr($theData,0,2000);
> > > >>> ?>
> > > >>> For some reason, it displays the logs when I run the php file thru
> > > >>> terminal:
> > > >>> php -f /web/apache.php
> > > >>>
> > > >>> but not when I access it thru the web. when I browse to it, it just
> > > >>> displays
> > > >>> the static text ("This weeks apache log (clears every sunday
> > > morning):"),
> > > >>> not the log text.
> > > >>>
> > > >>> Very confused,
> > > >>> zootboy
> > > >>>
> > > >>>
> > > >>
> > > >
> > > >
> > > >
> > >
> >
> >
> >
> > --
> > Feh.
> >
> >
>
>
> --
> Feh.
>
>
--
Feh.
--
Feh.
--- End Message ---
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php