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');