1

我有一个非常奇怪的问题:我创建了简单的基于 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 ($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");
}
?>

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();
?>

而且这种方法根本不起作用:(我尝试将包含更改为要求并使用 ABSPATH 而不是 $_SERVER["DOCUMENT_ROOT"] 但它仍然失败。日志文件中记录的最后一件事是“”是的,我正在工作。id = xxx 状态 = 99"。我创建了这样的 test.php 文件:

<?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 运行它时,它工作得很好。它记录到文件“你好,我正在发送脚本!” 和所有其他的东西。我不知道我在哪里犯错:(

4

1 回答 1

0

尝试删除“/”,并像这样使用它:

$_SERVER["DOCUMENT_ROOT"]."sell_stuff.php";

另外 $_SERVER["DOCUMENT_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__);

看看你得到的差异和路径。

于 2015-07-21T08:23:20.807 回答