It looks like an apache that thinks it's root:
os.system("whoami")
print "<br>"
print os.geteuid()
print "<br>"
print os.getuid()
print "<br>"
print os.path.expanduser("~")
print "<br>"
print os.getenv("HOME")
print "<br>"
print os.getenv("USERPROFILE")
print "<br>"
print os.getenv("USER")
print "<br>"
print os.getenv("TMP")
print "<br>"
produces:
apache
81
/root
None
root
None
So I should adjust the system so a confused apache-owned process that thinks it's root will run? Or are there features to ask PHP to spawn subprocesses that know who they're running as? (or is that something beside the point of this list?)
On Fri, Aug 1, 2008 at 1:09 PM, Michael Droettboom <mdroe@...86... > <mailto:mdroe@…86…>> wrote:
Below is the code in mpl that actually does the lookup. To get to
the bottom of this, I would try to figure out in your Apache/PHP
environment what
a) what os.path.expanduser("~") gives
b) what the values of the environment variables "HOME",
"USERPROFILE", "USER", and "TMP" are.
I suspect either matplotlib is not getting run under user 'apache'
as it should, or there is something fishy about the environment.
Cheers,
Mike
def _get_home():
"""Find user's home directory if possible.
Otherwise raise error.
:see:
http://mail.python.org/pipermail/python-list/2005-February/263921.html
"""
path=''
try:
path=os.path.expanduser("~")
except:
pass
if not os.path.isdir(path):
for evar in ('HOME', 'USERPROFILE', 'TMP'):
try:
path = os.environ[evar]
if os.path.isdir(path):
break
except: pass
if path:
return path
else:
raise RuntimeError('please define environment variable $HOME')
get_home = verbose.wrap('$HOME=%s', _get_home, always=False)
def _get_configdir():
"""
Return the string representing the configuration dir.
default is HOME/.matplotlib. you can override this with the
MPLCONFIGDIR environment variable
"""
configdir = os.environ.get('MPLCONFIGDIR')
if configdir is not None:
if not _is_writable_dir(configdir):
raise RuntimeError('Could not write to
MPLCONFIGDIR="%s"'%configdir)
return configdir
h = get_home()
p = os.path.join(get_home(), '.matplotlib')
if os.path.exists(p):
if not _is_writable_dir(p):
raise RuntimeError("'%s' is not a writable dir; you must
set %s/.matplotlib to be a writable dir. You can also set
environment variable MPLCONFIGDIR to any writable directory where
you want matplotlib data stored "% (h, h))
else:
if not _is_writable_dir(h):
raise RuntimeError("Failed to create %s/.matplotlib;
consider setting MPLCONFIGDIR to a writable directory for
matplotlib configuration data"%h)
os.mkdir(p)
"Jonathan Hayward, http://JonathansCorner.com" wrote:
User apache exists with home directory /var/www, which exists.
On Fri, Aug 1, 2008 at 11:59 AM, Michael Droettboom > <mdroe@...86... <mailto:mdroe@…86…> > <mailto:mdroe@…86…>> wrote:
It's supposed to default to the current user's home directory.
Perhaps "apache" doesn't have a home directory?
Cheers,
Mike
"Jonathan Hayward, http://JonathansCorner.com" wrote:
I found a reason for the behavior:
The script was running as user apache, but trying to open
/root/.matplotlib, and /root was mode 0700. It stopped
crashing on import after I made /root mode 0711.
This is somewhat surprising behavior to me; shouldn't it be
defaulting to something besides expected access to ~root?
On Fri, Aug 1, 2008 at 11:38 AM, Jonathan Hayward,
http://JonathansCorner.com <jonathan.hayward@...789...
<mailto:jonathan.hayward@…789…>
<mailto:jonathan.hayward@…789…
<mailto:jonathan.hayward@…789…>>
<mailto:jonathan.hayward@…789…
<mailto:jonathan.hayward@…789…>
<mailto:jonathan.hayward@…789…
<mailto:jonathan.hayward@…789…>>>> wrote:
Tried that and reran it; I'm getting substantially
the same
stacktrace:
File "/home/jhayward/bintmp/test.py", line 5, in
<module>
import matplotlib;
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
639, in <module>
rcParams = rc_params()
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
562, in rc_params
fname = matplotlib_fname()
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
513, in matplotlib_fname
fname = os.path.join(get_configdir(),
'matplotlibrc')
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
207, in wrapper
ret = func(*args, **kwargs)
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py", line
403, in _get_configdir
raise RuntimeError("Failed to create %s/.matplotlib;
consider
setting MPLCONFIGDIR to a writable directory for
matplotlib
configuration data"%h)
RuntimeError: Failed to create /root/.matplotlib;
consider
setting
MPLCONFIGDIR to a writable directory for matplotlib
configuration data
It's /path/matplotlibrc and not /path/.matplotlibrc
or anything
like that?
On Fri, Aug 1, 2008 at 10:51 AM, Michael Droettboom > <mdroe@...86... <mailto:mdroe@…86…> > <mailto:mdroe@…86…> > <mailto:mdroe@…86… > <mailto:mdroe@…86…>>> wrote:
Just throwing out a suggestion here: You could try
putting a
matplotlibrc file in the same directory as your
Python
script
-- it will use that instead of the one in
~/.matplotlib.
Cheers,
Mike
"Jonathan Hayward, http://JonathansCorner.com"
wrote:
I have a PHP script which authenticates a
user and I am
trying to get the PHP script to wrap a Python
script using
matplotlib.
As it is, the script mostly works when
invoked from the
command line or as its own CGI script. When
I call
it from
a PHP script, it doesn't produce output, and
testing found
that when I call a Python script from a PHP
script,
output
works before but not after "import
matplotlib": if
the PHP
script calls a script of:
#!/usr/bin/python
print "Before import matplotlib."
import matplotlib;
print "After import matplotlib."
the first print statement succeeds but the
second one
fails; the server log shows a crash of:
Before import matplotlib.Traceback (most recent
call last):
File "/home/jhayward/bintmp/test.py", line
5, in
<module>
import matplotlib;
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
line 639, in <module>
rcParams = rc_params()
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
line 562, in rc_params
fname = matplotlib_fname()
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
line 513, in matplotlib_fname
fname = os.path.join(get_configdir(),
'matplotlibrc')
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
line 207, in wrapper
ret = func(*args, **kwargs)
File
"/usr/lib64/python2.5/site-packages/matplotlib/__init__.py",
line 403, in _get_configdir
raise RuntimeError("Failed to create
%s/.matplotlib;
consider setting MPLCONFIGDIR to a writable
directory for
matplotlib configuration data"%h)
RuntimeError: Failed to create
/root/.matplotlib;
consider
setting MPLCONFIGDIR to a writable directory for
matplotlib configuration data
I think this error is somewhat misleading;
it persisted
after I ran a "chmod -R 1777 /root/.matplotlib".
What is the proper way to adjust things so
matplotlib will
be happy with its .matplotlib directory?
-- -- Jonathan Hayward,
christos.jonathan.hayward@...287...
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>>>
** To see an award-winning website with stories,
essays,
artwork,
** games, and a four-dimensional maze, why
not visit my
home page?
** All of this is waiting for you at
http://JonathansCorner.com
++ Would you like to curl up with one of my
hardcover books?
++ You can now get my books from
http://CJSHayward.com
------------------------------------------------------------------------
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin
Your Move
Developer's challenge
Build the coolest Linux based applications with
Moblin SDK
& win great prizes
Grand prize is a trip for two to an Open
Source event
anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
<http://moblin-contest.org/redirect.php?banner_id=100&url=/>
<http://moblin-contest.org/redirect.php?banner_id=100&url=/
<http://moblin-contest.org/redirect.php?banner_id=100&url=/>>
<http://moblin-contest.org/redirect.php?banner_id=100&url=/
<http://moblin-contest.org/redirect.php?banner_id=100&url=/>
<http://moblin-contest.org/redirect.php?banner_id=100&url=/
<http://moblin-contest.org/redirect.php?banner_id=100&url=/>>>
------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
<mailto:Matplotlib-users@lists.sourceforge.net>
<mailto:Matplotlib-users@lists.sourceforge.net
<mailto:Matplotlib-users@lists.sourceforge.net>>
<mailto:Matplotlib-users@lists.sourceforge.net
<mailto:Matplotlib-users@lists.sourceforge.net>
<mailto:Matplotlib-users@lists.sourceforge.net
<mailto:Matplotlib-users@lists.sourceforge.net>>>
matplotlib-users List Signup and Options
-- Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA
-- -- Jonathan Hayward,
christos.jonathan.hayward@...287...
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>>
** To see an award-winning website with stories, essays,
artwork,
** games, and a four-dimensional maze, why not visit my
home page?
** All of this is waiting for you at
http://JonathansCorner.com
++ Would you like to curl up with one of my
hardcover books?
++ You can now get my books from http://CJSHayward.com
-- -- Jonathan Hayward,
christos.jonathan.hayward@...287...
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>>
** To see an award-winning website with stories,
essays, artwork,
** games, and a four-dimensional maze, why not visit my
home page?
** All of this is waiting for you at
http://JonathansCorner.com
++ Would you like to curl up with one of my hardcover
books?
++ You can now get my books from http://CJSHayward.com
-- Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA
-- -- Jonathan Hayward, christos.jonathan.hayward@...287...
<mailto:christos.jonathan.hayward@…287…>
<mailto:christos.jonathan.hayward@…287…
<mailto:christos.jonathan.hayward@…287…>>
** To see an award-winning website with stories, essays, artwork,
** games, and a four-dimensional maze, why not visit my home page?
** All of this is waiting for you at http://JonathansCorner.com
++ Would you like to curl up with one of my hardcover books?
++ You can now get my books from http://CJSHayward.com
-- Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA
--
-- Jonathan Hayward, christos.jonathan.hayward@...287... <mailto:christos.jonathan.hayward@…287…>
** To see an award-winning website with stories, essays, artwork,
** games, and a four-dimensional maze, why not visit my home page?
** All of this is waiting for you at http://JonathansCorner.com
++ Would you like to curl up with one of my hardcover books?
++ You can now get my books from http://CJSHayward.com