Python “的权限被拒绝错误”;geckodriver.log“;尝试在apache上运行wsgi selenium脚本时

Python “的权限被拒绝错误”;geckodriver.log“;尝试在apache上运行wsgi selenium脚本时,python,selenium,selenium-webdriver,flask,mod-wsgi,Python,Selenium,Selenium Webdriver,Flask,Mod Wsgi,我创建了一个运行selenium脚本的flask应用程序。在flask中,它工作得很好,但是当我使用wsgi将它传输到apache时,我从apache.log中得到了这个错误。模板已加载,但selenium脚本未运行。我将附加相关的error.log行以及配置文件。任何帮助都将不胜感激 [Sun Nov 20 00:37:28.995529 2016] [wsgi:error] [pid 7492:tid 1954542640] File "/usr/local/lib/python2.7/

我创建了一个运行selenium脚本的flask应用程序。在flask中,它工作得很好,但是当我使用wsgi将它传输到apache时,我从apache.log中得到了这个错误。模板已加载,但selenium脚本未运行。我将附加相关的error.log行以及配置文件。任何帮助都将不胜感激

[Sun Nov 20 00:37:28.995529 2016] [wsgi:error] [pid 7492:tid 1954542640]   File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/service.py", line 45, in __init__
[Sun Nov 20 00:37:28.995545 2016] [wsgi:error] [pid 7492:tid 1954542640]     log_file = open(log_path, "a+")
[Sun Nov 20 00:37:28.995560 2016] [wsgi:error] [pid 7492:tid 1954542640] IOError: [Errno 13] Permission denied: 'geckodriver.log'
webroombooker.config

<VirtualHost *:80>
            ServerName localhost

            WSGIScriptAlias / /home/pi/Website/webroombooker.wsgi

            <Directory /home/pi/Website/>
                    Require all granted
            </Directory>

            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

提前谢谢你!我对这个很陌生

Apache/mod_WSGI下WSGI应用程序进程的当前工作目录通常是根目录。该目录由根用户拥有。因为您试图对日志文件使用相对路径名,而不是绝对路径名,所以它将尝试将目录写入根目录,因为它属于根用户,所以您无法这样做。见:


对于在Apache/mod_wsgi下运行时的日志记录,最好将应用程序配置为登录到
stderr
。这样,它就会被捕获到Apache错误日志中,您不必担心在哪里可以编写日志文件。

Apache/mod_WSGI下WSGI应用程序进程的当前工作目录通常是根目录。该目录由根用户拥有。因为您试图对日志文件使用相对路径名,而不是绝对路径名,所以它将尝试将目录写入根目录,因为它属于根用户,所以您无法这样做。见:


对于在Apache/mod_wsgi下运行时的日志记录,最好将应用程序配置为登录到
stderr
。这样,它就会被捕获到Apache错误日志中,您不必担心在哪里可以编写日志文件。

Apache以不同的用户身份、不同的环境和不同的权限运行。大多数情况下,它作为用户
www data
运行,因此该用户需要访问您的文件。我在文件和问题上使用了chmod 777,但仍然得到相同的结果。您在文件夹(及其父文件夹)上使用了什么模式?日志文件所在的文件夹上也使用了chmod 777。但我的主文件夹的权限并没有那么松散。这就是问题所在吗?其他用户只有在能够访问路径
/full/path/with/many/folders/geckodriver.log
-或使用
/var/log
文件夹上的所有文件夹时,才能访问您的文件。Apache以不同的用户、不同的环境和不同的权限运行。大多数情况下,它作为用户
www data
运行,因此该用户需要访问您的文件。我在文件和问题上使用了chmod 777,但仍然得到相同的结果。您在文件夹(及其父文件夹)上使用了什么模式?日志文件所在的文件夹上也使用了chmod 777。但我的主文件夹的权限并没有那么松散。这就是问题所在吗?其他用户只有在访问路径
/full/path/with/many/folders/geckodriver.log
-或使用
/var/log
文件夹上的所有文件夹时才能访问您的文件。谢谢!问题是selenium默认情况下会记录到此文件。我不认为有什么办法可以阻止这一切。你是否在代码中创建了Firefox驱动程序。如果这样做,请尝试传递
browser=webdriver.Firefox(log\u path=None)
,或者传递用户Apache可以写入的运行位置的绝对日志文件路径。如果您查看Selenium的代码,请参阅中提到的其他驱动程序的类似内容,Firefox驱动程序使用与博客文章中提到的驱动程序不同的参数名称。我没有创建它。它只是自动创建它。log_path=None工作得不太好。谢谢你!非常感谢。问题是selenium默认情况下会记录到此文件。我不认为有什么办法可以阻止这一切。你是否在代码中创建了Firefox驱动程序。如果这样做,请尝试传递
browser=webdriver.Firefox(log\u path=None)
,或者传递用户Apache可以写入的运行位置的绝对日志文件路径。如果您查看Selenium的代码,请参阅中提到的其他驱动程序的类似内容,Firefox驱动程序使用与博客文章中提到的驱动程序不同的参数名称。我没有创建它。它只是自动创建它。log_path=None工作得不太好。谢谢你!
<Directory /home/pi/Website/>
            Require all granted
</Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
#!/usr/bin/python

import sys
import logging

logging.basicConfig(stream=sys.stderr)

sys.path.insert(0,"/home/pi/Website")

from webroombooker import app as application