- From: Ville Skyttä <ville.skytta@iki.fi>
- Date: Sat, 19 Mar 2005 00:06:05 +0200
- To: Donny Viszneki <smirk@thebuicksix.com>
- Cc: www-validator@w3.org
On Thu, 2005-03-17 at 01:40 -0500, Donny Viszneki wrote:
> Who remembers this one?
> http://lists.w3.org/Archives/Public/www-validator/2005Jan/0036.html
>
> Well someone asked me if I ever got it to work, and my answer was no.
> But I looked at it again, and had a hunch, and I have identified the
> problem. My validator now works perfectly with a hack in place, so I
> will reveal the problem to this mailing list so that you can come up
> with a more permanent solution:
>
> # Temporary filehandles.
> my $spin = IO::File->new_tmpfile;
> my $spout = IO::File->new_tmpfile;
> my $sperr = IO::File->new_tmpfile;
>
> On Mac OS X, IO::File->new_tmpfile() tries to create a file in /tmp.
> /tmp is owned by the administrator, and grouped under staff. The
> permissions set /tmp only writable to the owner. The www user owns the
> apache httpd threads that the main thread spawns. It didn't seem like a
> good long term solution to change the permissions or the ownership of
> /tmp, but when I temporarily did, the validator worked fine.\
>
> So, if there is a separate function you can use to create these pipes,
> then the problem will be solved. Please let me know what you think.
Hm, the suggestion in my reply at
http://lists.w3.org/Archives/Public/www-validator/2005Jan/0054.html
could be improved a bit now that we know /tmp permissions are the
problem. tempfile() from File::Temp can be told to create temporary
files in a specified directory, or it can take the TMPDIR environment
variable into account (according to the manual page, on some platforms).
I think this would work for you... ie. take the suggestion from my
previous reply, but use something like:
my $validator_tmpdir = "/some/where";
my $spin = tempfile(DIR => $validator_tmpdir);
my $spout = tempfile(DIR => $validator_tmpdir);
my $sperr = tempfile(DIR => $validator_tmpdir);
Of course, make sure that the /some/where dir exists and is writable by
the httpd user running the validator (and preferably as few as possible
others).
We may want to switch to File::Temp anyway in future validator versions
(if temp files are still needed, that is), as it seems to be more
flexible and paranoid than IO::File->new_tmpfile.
Received on Friday, 18 March 2005 22:08:28 UTC