PHP Предупреждение: require_once (../../../../ wp-load.php): не удалось открыть поток из файла php, выполняемого cron job [duplicate]

Я бы не использовал BigDecimal, если вы заботитесь о производительности. BigDecimal преобразует числа в строку и затем анализирует их снова:

  /** Constructs a `BigDecimal` using the decimal text representation of `Double` value `d`, rounding if necessary. */
  def decimal(d: Double, mc: MathContext): BigDecimal = new BigDecimal(new BigDec(java.lang.Double.toString(d), mc), mc)

Я буду придерживаться математических манипуляций, поскольку предложил Kaito .

18
задан gsquare567 25 June 2010 в 15:16
поделиться

5 ответов

Технически видно, что скрипт php запускается там, где находится cron; ех. Если cron был в / bin / cron, то это утверждение будет искать common.php в /bin/includes/common.php.

Итак, вам, вероятно, придется использовать fullpaths или использовать set_include_path

set_include_path('/home/username123/public_html/includes/');
require 'common.php';
21
ответ дан Robus 17 August 2018 в 14:16
поделиться
  • 1
    могу ли я сказать это: if (file_exists ('/ home / username123 / public_html / includes / common.php')) {set_include_path ('/ home / username123 / public_html / includes /'); require 'common.php'; } else require '../includes/common.php'; или мне нужно каждый раз изменять его вручную и делать это: // LIVE set_include_path ('/ home / fini7463 / public_html / includes /'); require 'common.php'; // DEBUG // require '../includes/common.php'; ? – gsquare567 25 June 2010 в 16:27
  • 2

Ноно. вам нужно использовать абсолютные пути на коронках.

то, что я делаю:

// supouse your cron is on app/cron and your lib is on app/lib
$base = dirname(dirname(__FILE__)); // now $base contains "app"

include_once($base . '/lib/db.inc');

// move on
19
ответ дан Gabriel Sosa 17 August 2018 в 14:16
поделиться
  • 1
    Нет, вы этого не делаете ... но вы должны учитывать тот факт, что вы можете работать в другом каталоге и с другим include_path – Mark Baker 25 June 2010 в 15:36
  • 2
    да, вы правы, я думаю, что лучшая формулировка может быть рекомендуемой вместо вам нужна . хорошо, я всегда стараюсь это делать – Gabriel Sosa 25 June 2010 в 17:51
  • 3
    Это должен быть принятый ответ – karancan 31 July 2013 в 17:36

Если относительный путь не работает, значит, текущий каталог, заданный при выполнении задач cron, не является / home / username123 / public_html. В таких случаях вы можете использовать только абсолютный путь.

0
ответ дан kiamlaluno 17 August 2018 в 14:16
поделиться

Это звучит так же просто, как только какой-то скрипт, который вы запускаете, устанавливает include_path, и вы включаете этот скрипт. используйте phpinfo (), чтобы проверить глобальную локальную настройку include_path.

0
ответ дан MANCHUCK 17 August 2018 в 14:16
поделиться

Альтернативой решениям, рекомендующим спецификацию абсолютного пути, является использование chdir в вашем скрипте. Таким образом, ваши относительные пути будут работать должным образом.

Например, чтобы перейти в каталог сценария:

$curr_dir = dirname(__FILE__);
chdir($curr_dir);

Чтобы перейти в родительский каталог скрипта:

$curr_dir = dirname(__FILE__);
chdir($curr_dir . "/..");

И и т. д.

0
ответ дан Scott C Wilson 17 August 2018 в 14:16
поделиться
Другие вопросы по тегам:

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