仅当从mod_wsgi运行时,来自Selenium firefox_binary.py的WebDriverException

时间:2011-10-07 21:28:15

标签: python selenium mod-wsgi wsgi

我在Ubuntu 11.04上运行Python 2.7,Virtualenv,Django 1.3,mod_wsgi,Apache应用程序。 包括psycopg2等在内的所有内容都与wsgi和app正常运行。 唯一的问题是Selenium。我收到此错误仅在我从wsgi 执行此操作时创建firefox驱动程序,如下所示:

from selenium import webdriver
wd = webdriver.Firefox()
  

WebDriverException异常值:消息:“无法加载配置文件。   配置文件目录:/ tmp / tmp8h7MW8“

我的Selenium版本是2.5 Apache以root身份启动,子进程以用户名app启动。

执行上面的代码来自相同的virtualenv而没有wsgi可以正常工作。

所以这让我觉得它在某种程度上是许可问题......所以我试过这个:

ls -l /tmp/tmp8h7MW8
>> drwxr-xr-x 3 app app 4096 2011-10-07 13:09 extensions
>> -rw-r--r-- 1 app app 2188 2011-10-07 13:09 user.js

如果你能指出我可能错误配置wsgi的正确方向,我将不胜感激

2 个答案:

答案 0 :(得分:1)

Apache进程以特殊用户身份运行。如果该临时目录真正归“app”所有,那么Apache用户可能无法写入它。

Apache运行的用户是什么?您是否正在使用守护进程模式并覆盖应该运行的用户?

答案 1 :(得分:1)

所以我跟踪firefx_binary.py,并在调用socket_.connect((“127.0.0.1”,self.profile.port))时弄清楚实际错误是“Connection refused”。 端口值每次都会更改(即:45807,44719,60565)

发生错误取决于格雷厄姆怀疑的apache配置(apache运行用户和组)上的组设置。我和2个用户一起玩。

$ groups app
app : app
$ groups nreeves
nreeves : nreeves adm dialout fax cdrom floppy tape dip video plugdev fuse

我尝试了3个模式,只有1个作品仍然让我困惑,希望有人能告诉我为什么......

# this does't work...
User=nreeves
Group=adm

# this does't work either
User=app
Group=app

# this works
User=nreeves
Group=nreeves