从其他文件夹重定向时,Stripe API 停止工作
Posted
技术标签:
【中文标题】从其他文件夹重定向时,Stripe API 停止工作【英文标题】:Stripe API stops working when redirecting from a different folder 【发布时间】:2021-07-08 06:44:41 【问题描述】:不知道发生了什么,但是当我将条带结帐应用程序下载到我的计算机并通过我的终端运行它时,它可以工作。我的条带仪表板上的日志获得了多个没有错误的事件。
php -S localhost:4242
我安装了 stripe CLI 来测试 webhook,但后来遇到了这个问题。无论哪种方式,它都帮助我进行了一些调试。
stripe listen --forward-to=localhost:4242
当我转到 localhost:4242/index.html 并单击应该启动“订阅”过程的按钮时,条带化日志:
2021-04-13 14:48:24 --> checkout.session.completed [evt_1Ifg2uLgiL5uZZPEFUQPX5UY]
2021-04-13 14:48:24 <-- [200] POST http://localhost:4242 [evt_1Ifg2uLgiL5uZZPEFUQPX5UY]
2021-04-13 14:48:24 --> payment_method.attached [evt_1Ifg2uLgiL5uZZPEovIMBDrU]
2021-04-13 14:48:24 <-- [200] POST http://localhost:4242 [evt_1Ifg2uLgiL5uZZPEovIMBDrU]
2021-04-13 14:48:24 --> customer.subscription.created [evt_1Ifg2vLgiL5uZZPEeW5I9uuv]
2021-04-13 14:48:24 <-- [200] POST http://localhost:4242 [evt_1Ifg2vLgiL5uZZPEeW5I9uuv]
2021-04-13 14:48:25 --> customer.subscription.updated [evt_1Ifg2vLgiL5uZZPET119BTe4]
2021-04-13 14:48:25 <-- [200] POST http://localhost:4242 [evt_1Ifg2vLgiL5uZZPET119BTe4]
2021-04-13 14:48:25 --> invoice.paid [evt_1Ifg2vLgiL5uZZPERfBA65LF]
2021-04-13 14:48:25 <-- [200] POST http://localhost:4242 [evt_1Ifg2vLgiL5uZZPERfBA65LF]
2021-04-13 14:48:26 --> invoice.updated [evt_1Ifg2vLgiL5uZZPEe3m7U1wL]
2021-04-13 14:48:26 <-- [200] POST http://localhost:4242 [evt_1Ifg2vLgiL5uZZPEe3m7U1wL]
问题从这里开始。我创建了一个带有登录系统和一堆东西的网站,我的目的是将这个条带结帐应用程序链接到那个登录系统,所以我需要访问 $_SESSION 变量。顺便说一下,这是我的文件夹结构:
Root
|── /includes
│ │── login.inc.php
│ └── logout.inc.php
│
|── /stripe_test
| │── index.html
| │── createcheckout.php
| │── config.ini
| │── config.php
│ └── script.js
│
|── /loginpage.php
|── /editprofile.php
|── /logoutpage.php
|── /index.php
|── /header.php
|── /footer.php
└── .htaccess
我在 root/index.php 中添加了一个简单的链接,该链接重定向到 root/stripe_test/index.html,使它成为一个“选择计划”页面。我应该提一下,我将根目录托管在 xampp localhost:8080 中,这更奇怪。因为从 localhost:4242 打开该条带 html 页面使其按预期工作。简而言之:
localhost:8080/stripe_test/index.html - 不起作用(通过 xampp) localhost:4242/index.html - works(通过终端:php -S localhost:4242)我检查了我的 apache 错误日志,点击按钮后显示如下:
[Tue Apr 13 15:51:35.411737 2021] [core:warn] [pid 8520:tid 588] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Apr 13 15:51:35.432756 2021] [mpm_winnt:notice] [pid 8520:tid 588] AH00455: Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/8.0.2 configured -- resuming normal operations
[Tue Apr 13 15:51:35.432756 2021] [mpm_winnt:notice] [pid 8520:tid 588] AH00456: Apache Lounge VS16 Server built: Oct 2 2020 11:45:39
[Tue Apr 13 15:51:35.432756 2021] [core:notice] [pid 8520:tid 588] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Tue Apr 13 15:51:35.434758 2021] [mpm_winnt:notice] [pid 8520:tid 588] AH00418: Parent: Created child process 11816
[Tue Apr 13 15:51:35.724020 2021] [mpm_winnt:notice] [pid 11816:tid 700] AH00354: Child: Starting 150 worker threads.
[Tue Apr 13 15:51:44.120877 2021] [php:warn] [pid 11816:tid 1840] [client ::1:58891] PHP Warning: require_once(shared.php): Failed to open stream: No such file or directory in C:\\xampp\\root\\config.php on line 3, referer: http://localhost:8080/stripe_test/index.html
[Tue Apr 13 15:51:44.120877 2021] [php:error] [pid 11816:tid 1840] [client ::1:58891] PHP Fatal error: Uncaught Error: Failed opening required 'shared.php' (include_path='C:\\xampp\\php\\PEAR') in C:\\xampp\\root\\config.php:3\nStack trace:\n#0 main\n thrown in C:\\xampp\\root\\config.php on line 3, referer: http://localhost:8080/stripe_test/index.html
我不知道为什么该目录有两个“反斜杠”,但它可能与我的标题中的 .htaccess 文件和 有关。这是 htaccess 指令:
Options -MultiViews
RewriteEngine on
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ - [L]
RewriteRule ^profile/([\w-]+)/?$ profile.php?userid=$1 [L,QSA,NC]
RewriteRule ^([\w-]+)/([\w-]+)/?$ city_page.php?state=$1&city=$2 [L,QSA]
有人能解释一下这里发生了什么吗?我认为主要问题是 htaccess 和基本 href,因为当我在终端中定位实际文件夹 stripe_test 并直接从该目录运行服务器时,它可以工作。当我使用我的 xampp 运行服务器时,它会使用那些 .htaccess 指令和基本 href,这时 error.log 会显示奇怪的路径。
【问题讨论】:
先注释掉所有重写规则来调试会更好吗? 【参考方案1】:C:\\xampp\\root\\config.php
没有文件。在C:\\xampp\\root\\stripe_test\\config.php
。
【讨论】:
是的,我意识到了这一点。但是,当我只是更改程序时,为什么它会解析为 C:\\xampp\\root\\config.php 呢? IE。我从 root/ 启动 xampp,然后单击一堆链接以在 root/stripe_test/index.html 结束与直接从 root/stripe_test 启动服务器然后打开 index.html。【参考方案2】:我想通了。显然它是由两件事引起的:
-
目录目标不正确
Chrome 存储 JS 缓存的 dir 目标不正确
我打开了 chrome 控制台并检查了哪个部分搞砸了,然后我开始使用文件名,即从 config.php 到 asdffwefconfig.php 并在文件本身中添加无效代码,例如 dfianfininf;
在控制台中,事实证明,它仍然从缓存中解析为 root/config.php。所以我尝试在一个隐身窗口中完成整个过程:
-
在 localhost:8080 使用根目录启动 xampp
单击我本地站点中的一堆链接以到达 localhost:8080/stripe_test/index.html
单击“订阅”按钮以启动条带中的创建会话
我之前在#3 被阻止,但在隐身模式下,它正在推进并将日志发送到我的条带仪表板。所以我清除了我的浏览器缓存,你知道吗,它可以在我的常规浏览器窗口中使用。
感谢所有尝试对此进行调查的人,感谢你们抽出宝贵的时间。将此标记为解决方案。
【讨论】:
以上是关于从其他文件夹重定向时,Stripe API 停止工作的主要内容,如果未能解决你的问题,请参考以下文章
如何解决Stripe元素的react导致重定向内存泄漏的问题。
Stripe Checkout 订阅付款失败重定向到过期链接页面