phpsec lib путь не работает из задания cron

Путь к файлу для моего скрипта

/var/www/html/MyProject/index.php

когда я запускаю скрипт как

~/./Myproject$ php index.php его работает отлично

Когда я запускаю скрипт как

~$ php /var/www/html/MyProject/index.php

Он не читает путь к файлу phpseclib

Мой файл index.php

<?php

include("crud.php");
include("functions.php");

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SFTP.php');

...

?>

ошибка:

PHP Warning:  include(Net/SFTP.php): failed to open stream: No such file or directory in /var/www/html/MyProject/index.php on line 6
PHP Warning:  include(): Failed opening 'Net/SFTP.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear.:/usr/share/php:/usr/share/pear/phpseclib') in /var/www/html/MyProject/index.php on line 6
PHP Fatal error:  Class 'Net_SFTP' not found in /var/www/html/MyProject/index.php on line 186

Как запустить php скрипт в форме cron?

2 ответа

Из сообщения об ошибке вы можете увидеть, что phpseclib неправильно добавляется в путь включения. Попробуйте это вместо set_include_path:

set_include_path(get_include_path() . PATH_SEPARATOR .  __DIR__ . DIRECTORY_SEPARATOR . 'phpspeclib');

__DIR__ будет учитывать местоположение файла, который вы выполняете, а не пытаться найти phpspeclib относительно текущего рабочего каталога.

Вы можете попробовать поместить библиотеку phpseclib1.0.12 в /usr/share/ или, если вы работаете из Проекта, вы можете попробовать добавить вот так:

set_include_path('/var/www/html/phpseclib1.0.12');
include('Net/SFTP.php');
Другие вопросы по тегам