У меня очень странная проблема:
Я создал простой магазин на основе 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();
?>
И этот метод вообще не работает 🙁 Я пытался изменить include, чтобы требовать и использовать ABSPATH вместо $ _SERVER [«DOCUMENT_ROOT»], но он все равно не работает. Последнее, что вошло в файл журнала, это «» Да, я работаю. Id = ххх с состоянием = 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, это работает отлично. Это вход в файл «Здравствуйте, я в отправке сценария!» и все остальное.
Я не знаю, где я делаю ошибку 🙁
Попробуйте опустить «/» и использовать его следующим образом:
$_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__);
чтобы увидеть разницу и путь, который вы получаете.
Других решений пока нет …