Php 包括/要求不工作-在线支付脚本
我有一个很奇怪的问题: 我创建了一个简单的基于Wordpress的商店。我出售电子书并通过电子邮件发送。我使用在线支付,并有插件与他们合作。它在php文件中有内置网关。我想将我的代码注入这个脚本,以实现销售自动化。看起来是这样的:Php 包括/要求不工作-在线支付脚本,php,wordpress,mailing,payu,Php,Wordpress,Mailing,Payu,我有一个很奇怪的问题: 我创建了一个简单的基于Wordpress的商店。我出售电子书并通过电子邮件发送。我使用在线支付,并有插件与他们合作。它在php文件中有内置网关。我想将我的代码注入这个脚本,以实现销售自动化。看起来是这样的: <?php //1. Get payment info from payment service via $_POST //2. Chceck all hashes etc. //3. Get status to variable e.g. $status if
<?php
//1. Get payment info from payment service via $_POST
//2. Chceck all hashes etc.
//3. Get status to variable e.g. $status
if ($status == 99)//everything is ok
{
$order_id = $_POST["no_of_transaction"];
log_to_file("Yeah i am workig. id =".$order_id."with status ".$status);
include $_SERVER["DOCUMENT_ROOT"]."/sell_stuff.php";
log_to_file("Yeah i am still workig");
}
?>
<?php
echo "Yeah i am workig";
$oder_id = 100; //my own order
include $_SERVER["DOCUMENT_ROOT"]."/sell_stuff.php";
echo "Yeah i am still workig";
?>
sell_stuff.php:
<?php
log_to_file("Hello i am in sending script!");
//i assume that $order_id is still visible
$order = mysql_fetch_assoc(mysql_query("SELECT * FROM order where id=".$order_id));
$mail->to = $order['email'];
$mail->attachment = "/upload/pdf/".$order['book'].'.pdf';
$mail->send();
?>
这种方法根本不起作用:(我试图将include更改为要求并使用ABSPATH,而不是$_SERVER[“DOCUMENT\u ROOT”],但仍然失败。日志文件中记录的最后一件事是“是的,我正在工作。id=xxx,状态为99”。
我创建了test.php文件,如下所示:
<?php
//1. Get payment info from payment service via $_POST
//2. Chceck all hashes etc.
//3. Get status to variable e.g. $status
if ($status == 99)//everything is ok
{
$order_id = $_POST["no_of_transaction"];
log_to_file("Yeah i am workig. id =".$order_id."with status ".$status);
include $_SERVER["DOCUMENT_ROOT"]."/sell_stuff.php";
log_to_file("Yeah i am still workig");
}
?>
<?php
echo "Yeah i am workig";
$oder_id = 100; //my own order
include $_SERVER["DOCUMENT_ROOT"]."/sell_stuff.php";
echo "Yeah i am still workig";
?>
…当我通过www.mystore.com/test.php运行它时,它的工作非常完美。它会记录到文件“Hello I am in sending script!”和所有其他内容。
我不知道我在哪里出错:(试着放下“/”,然后像这样使用它:
$_SERVER["DOCUMENT_ROOT"]."sell_stuff.php";
另外$\u服务器[“DOCUMENT\u ROOT”]正在生成指向www根文件夹的路径,如
www.serwer.com/www/
如果您的站点位于:
www.serwer.com/www/www2/
它将不包括在内。如果您将使用:
__DIR__."/sell_stuff.php";
它将获取文件所在位置的路径
www.serwer.com/www/www2/
你可以随时:
var_dump($_SERVER["DOCUMENT_ROOT"]);
var_dump(__DIR__);
要查看差异和获得的路径,请尝试删除“/”,并像以下那样使用它:
$_SERVER["DOCUMENT_ROOT"]."sell_stuff.php";
另外$\u服务器[“DOCUMENT\u ROOT”]正在生成指向www根文件夹的路径,如
www.serwer.com/www/
如果您的站点位于:
www.serwer.com/www/www2/
它将不包括在内。如果您将使用:
__DIR__."/sell_stuff.php";
它将获取文件所在位置的路径
www.serwer.com/www/www2/
你可以随时:
var_dump($_SERVER["DOCUMENT_ROOT"]);
var_dump(__DIR__);
查看差异和您得到的路径。在include try之前(出于调试目的)
ini\u set('display\u errors',true);error\u reporting(E\u ALL)
。弹出任何消息吗?您不应该依赖于$\u服务器变量,而应该依赖于调用脚本的位置。类似这样的内容:include uu DIR u./../inc/sell _stuff.php'
在include try(出于调试目的)ini\u集('display\u errors',true);错误报告(E\u ALL)
。弹出任何内容?您不应该依赖于$\u服务器变量,而应该依赖于调用脚本的位置。类似这样的内容:包括$\u DIR./../inc/sell\u stuff.php'
var\u dump($\u SERVER[“DOCUMENT\u ROOT”]);var\u dump($\u DIR uu)是将文件移动到更深的方法。如果您的主根目录是www.site.www/www/,则将其移动到www.site.www/www/www2/,然后检查上面的内容。Yep dir显示当前文件夹,$\u SERVER[“DOCUMENT\u root”]仍然是主文件夹,但在我的情况下是不可逆的,因为使用sell\u stuff.php位于主文件夹:/var\u dump($\u SERVER[”DOCUMENT_ROOT“];var_dump(uuu DIR_uuu);
是将文件移动到更深的方法。如果您的主根是www.site.www/www/,则将其移动到www.site.www/www/wwww2/,然后检查上面的内容。Yep DIR显示当前文件夹,$\u SERVER[“DOCUMENT_ROOT”]仍然是主文件夹,但在我的情况下是不可逆的,因为sell_stuff.php位于主文件夹中:/