英文:
Permission error on sqlite.py file in venv
问题
我需要从Apache2上的Debian启动一个类似的脚本。
$pid = shell_exec(sprintf('nohup /bin/bash /home/debian/Desktop/Holibot/holi.sh > /dev/null 2>&1 & echo $!'));
holi.sh只是激活虚拟环境并运行Python脚本。
然而,我通过pip安装的外部库(kerykeion)在它使用的sqlite.py文件上引发了权限错误13权限被拒绝(用于获取geonames)。但我已经在我的Python项目的文件夹/文件中递归地设置了chmod 777 rwxrwxrwx和chown www-data!
完整的回溯:
2023-06-14 13:40:16,532 - KrInstance - ERROR - 在获取http://api.geonames.org/searchJSON时出错:尝试写入只读数据库
该错误来自
self.responses[cache_key] = cached_response
File "/home/debian/Desktop/Holibot/venv/lib/python3.9/site-packages/requests_cache/backends/sqlite.py", line 283, in __setitem__
con.execute(
sqlite3.OperationalError: 尝试写入只读数据库
当我直接以www-data用户运行脚本时,它可以正常工作,没有权限错误。
theo@x:/home/debian/Desktop/Holibot$ sudo -u www-data bash -c "/home/debian/Desktop/Holibot/holi.sh"
我快疯了!是Apache引起了这个问题吗?为什么我自己运行时它可以正常工作...
英文:
I need to launch a script like that from Apache2 on debian
$pid = shell_exec(sprintf('nohup /bin/bash /home/debian/Desktop/Holibot/holi.sh > /dev/null 2>&1 & echo $!'));
The holi.sh just activate the venv and run the python script.
However an external lib (kerykeion) I've pip installed raises a permission error 13 permission denied on a sqlite.py file base it uses (for geonames fetching). But I have put chmod 777 rwxrwxrwx and chown www-data recursively everywhere in my folders/files of python project !!! The script .py run well with www-data user and crashes during execution with the error...
Full traceback :
2023-06-14 13:40:16,532 - KrInstance - ERROR - Error in fetching http://api.geonames.org/searchJSON: attempt to write a readonly database
Which error comes from
self.responses[cache_key] = cached_response
File "/home/debian/Desktop/Holibot/venv/lib/python3.9/site-packages/requests_cache/backends/sqlite.py", line 283, in __setitem__
con.execute(
sqlite3.OperationalError: attempt to write a readonly database
And when I run the script directly with www-data it works without the perm error...
theo@x:/home/debian/Desktop/Holibot$ sudo -u www-data bash -c "/home/debian/Desktop/Holibot/holi.sh"
I am going crazy ! Is it Apache which causes this issue? Why does it work when I run it myself...
答案1
得分: 0
问题是一个Python库在/var/www/html/
而不是/home/debian/Desktop/Holibot/
创建了一个文件夹,所以PWD变量不同!
我成功地使用以下方法进行了故障排除:
import traceback
print(traceback.format_exc())
而且www-data
在html/
文件夹中没有“wx”的权限,这可能是一个不好的做法?...
英文:
The problem was that a python lib created a folder in /var/www/html/ instead of /home/debian/Desktop/Holibot/ so the PWD variables was different !
I did successfully troubleshooted with
import traceback
print(traceback.format_exc())
And the www-data had no perm to "wx" in html/ folders which maybe a bad practice ? ...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论