php - Laravel 控制器中的 Python 脚本执行错误
问题描述
目前,我的脚本在我的服务器 cron 中特定时间运行的时间表内完美运行。目前,我的脚本在我服务器 cron 中特定时间运行的时间表内完美运行。
当我尝试在控制器内部执行该方法时,问题就出现了,这个方法基本上使用了一个shell_exec(),它在 python 中执行一个脚本,这个返回是我处理 Laravel 的。
当我从控制台或时间表调用它时,它可以正常工作,但是当我调用该方法甚至是\Artisan::call('schedule:test');
它时,它返回相同的错误,说它没有找到 geckdriver。
The command "python C:/wamp64/www/MoneyGuard/pythonGuard/tesouro_direto/tesouro_direto_precos_taxa_titulo.py" failed.
Exit Code: 1(General error)
Working directory: C:\wamp64\www\MoneyGuard\public
Output:
================
[ {"inicio": "2018-06-30 11:04:23.830834"},
Error Output:
================
Traceback (most recent call last):
File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Program Files (x86)\Python36-32\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "C:\Program Files (x86)\Python36-32\lib\subprocess.py", line 997, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/wamp64/www/MoneyGuard/pythonGuard/tesouro_direto/tesouro_direto_precos_taxa_titulo.py", line 17, in <module>
firefox = webdriver.Firefox(firefox_options=opts)
File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
self.service.start()
File "C:\Program Files (x86)\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
当我在终端内运行它时:它运行良好:
λ php artisan schedule:teste
[ {"inicio": "2018-06-29 17:23:08.963534"},
{ "titulo": "Tesouro IPCA+ 2024", "vencimento": "2024-08-15 00:00:00", "taxa_rendimento": "5.62", "valor_minimo": "44.50", "preco_unitario": "2225.41" },
{ "titulo": "Tesouro IPCA+ 2035", "vencimento": "2035-05-15 00:00:00", "taxa_rendimento": "5.87", "valor_minimo": "35.72", "preco_unitario": "1190.74" },
{ "titulo": "Tesouro IPCA+ 2045", "vencimento": "2045-05-15 00:00:00", "taxa_rendimento": "5.87", "valor_minimo": "33.70", "preco_unitario": "674.18" },
{ "titulo": "Tesouro IPCA+ com Juros Semestrais 2026", "vencimento": "2026-08-15 00:00:00", "taxa_rendimento": "5.68", "valor_minimo": "32.40", "preco_unitario": "3240.59" },
{ "titulo": "Tesouro IPCA+ com Juros Semestrais 2035", "vencimento": "2035-05-15 00:00:00", "taxa_rendimento": "5.79", "valor_minimo": "32.04", "preco_unitario": "3204.72" },
{ "titulo": "Tesouro IPCA+ com Juros Semestrais 2050", "vencimento": "2050-08-15 00:00:00", "taxa_rendimento": "5.88", "valor_minimo": "32.36", "preco_unitario": "3236.30" },
{ "titulo": "Tesouro Prefixado 2021", "vencimento": "2021-01-01 00:00:00", "taxa_rendimento": "9.20", "valor_minimo": "32.09", "preco_unitario": "802.49" },
{ "titulo": "Tesouro Prefixado 2025", "vencimento": "2025-01-01 00:00:00", "taxa_rendimento": "11.44", "valor_minimo": "34.66", "preco_unitario": "495.21" },
{ "titulo": "Tesouro Selic 2023", "vencimento": "2023-03-01 00:00:00", "taxa_rendimento": "0.02", "valor_minimo": "95.72", "preco_unitario": "9572.17" },
{"fim": "2018-06-29 17:23:19.484442"} ]
Python 脚本:tesouro_direto_precos_taxa_titulo.py
从我在控制器内运行命令时注意到的情况来看,它没有使用我系统的路径。问题是为什么?
我提前感谢您的帮助。
解决方案
推荐阅读
- algorithm - 策略和状态设计模式的区别,一个状态如何知道它的前身?
- javascript - 鼠标悬停在 React
- php - “stream_socket_enable_crypto():对等证书 CN=`gains.nanosupercloud.com' 与共享主机中的预期 CN=`smtp.sendgrid.net' 不匹配”
- android - 如何将 RecyclerView 与 CollapsingToolbarLayout 一起使用。RecyclerView 到达底部时需要加载更多数据
- python - 检查 Python 包是否需要 Visual Studio 构建工具
- python - 如何构建在线点对点视频聊天 Web 应用程序,什么技术堆栈任何库?特别是在python中
- javascript - 如何停止 Angular 中的重复 api 调用
- docker - 从一个容器 SSH 到另一个容器
- c# - 将字符串转换为日期格式为 'dd.MM.yyyy HH:mm:ss.fff z'
- c# - 为什么我的动画在 Unity 中是倒退的?