Как действительно включает работу разрешения пути в require_once?

Вы можете просто попробовать использовать следующее в любой перехваченной функции с динамической переменной $order_id:

// Get the WC_Email_New_Order object
$email_new_order = WC()->mailer()->get_emails()['WC_Email_New_Order'];

// Sending the new Order email notification for an $order_id (order ID)
$email_new_order->trigger( $order_id );

Это обычно вызывает уведомление о новом заказе Woocommerce для текущего идентификатора заказа.

17
задан Community 23 May 2017 в 12:13
поделиться

4 ответа

Если вы включаете другой файл, то рабочий каталог остается там, где находится включаемый файл.

Ваши примеры работают, как и предполагалось.

Правка: Второй пример работает, потому что . (фактическая директория) находится в пути включения (см. ваше сообщение об ошибке).

Правка 2:. Во втором примере ключевым моментом, который Вас заинтересовал, является следующая строка:

<?php require_once("f2.php"); ?>

Сначала она будет искать в текущей рабочей глобусе (/var/www/req_path_test), но не найдет f2.php.

В качестве запаздывания, она попытается найти f2. php в вашем include_path ('.:/usr/share/php:/usr/share/pear'), начиная с "." (что относится к файлу actual, а не к файлу , включая ).

Таким образом, "./f2.php" работает и требование не терпит неудачу.

.
12
ответ дан 30 November 2019 в 14:12
поделиться

Когда вы открываете index.php, рабочий каталог устанавливается в папку, в которой находится этот файл. А внутри включенного f1.php этот рабочий каталог не изменяется.

Вы можете включать файлы, используя их абсолютные пути относительно текущего включенного файла, например:

require_once(dirname(__FILE__).'/../../test/file.php')

Но лучше рассмотреть возможность использования автозагрузчика, если эти файлы содержат классы.

4
ответ дан 30 November 2019 в 14:12
поделиться

Normaly in you old structure

должна работать. Насколько я знаю, php берет пути из исходного скрипта

.
0
ответ дан 30 November 2019 в 14:12
поделиться

Похоже, что на вашем сервере включена настройка open_basedir в конфигурации PHP. Это делает невозможным включение (и открытие) файлов в папках выше Вашего в структуре каталога (т.е. Вы не можете использовать ../ для поднятия в структуре папок).

.
0
ответ дан 30 November 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: