LINUX.ORG.RU

Запуск php-скрипта в cron

 , ,


0

1

Доброго дня. Столкнулся с такой проблемой: есть php-скрипт, который должен обновляться по крону и обновлять сведения на локальном сайте. Сделал так

 sudo crontab -u www-data -e
40 *  * * * /usr/bin/php7.0-cgi /var/www/html/site/check.php > /dev/null 2>&1 

в /var/log/syslog пишет

(www-data) CMD (/usr/bin/php7.0-cgi /var/www/html/site/check.php > /dev/null 2>&1 )
ls -la /var/www/html/site/check.php
-rwxr-xr-x 1 www-data www-data /var/www/html/site/check.php
В результате, сам скрипт check.php через крон не выполняется, но если запустить его в браузере, то все норм, информация обновляется. Подскажите, в каком направлении дальше идти?


Ответ на: комментарий от jek04

sudo php /var/www/html/site/check.php

Версия программы : 2016-04-01<br>Получение данных через: rest<br>PHP Fatal error:  Uncaught Error: Call to undefined function oci_connect() in /var/www/html/site/check.php:36
Stack trace:
#0 {main}
  thrown in /var/www/html/site/check.php on line 36

reyist
() автор топика

/usr/bin/php7.0-cgi

Попробуй просто запускать скрипт тем пхп, что работает в консоли.

Deleted
()
Ответ на: комментарий от jek04

тогда выдает так

php /var/www/html/site/check.php
PHP Warning:  require_once(/var/www/html/site/config.php): failed to open stream: Permission denied in /var/www/html/site/check.php on line 5
PHP Fatal error:  require_once(): Failed opening required 'config.php' (include_path='.:/usr/share/php') in /var/www/html/site/check.php on line 5

reyist
() автор топика
Ответ на: комментарий от reyist

в www-data нет доступа к этим папкам.

Можете: а) Дать права 777 для проекта. б) Изменить владельца для проекта. в) Или добавить своего пользователя в группу www-data.

jek04
()

Не используй для консоли cgi интерпретатор.

Реши проблемы с путями и доступом к ним - скрипт не имеет прав на чтение файла.

nihirash ★★★
()
Ответ на: комментарий от jek04

Странно,OCI8 библиотеку с oracle client ставил, связь с бд была - об этом сигналила внутренняя проверка.. Тогда почему через браузер все норм выполняется, мне вообще не понятно

reyist
() автор топика
Ответ на: комментарий от nihirash

я пробовал и не через cgi, а /usr/bin/php /usr/bin/php7.0 или просто php, все одно и то же

reyist
() автор топика
Ответ на: комментарий от reyist

Потому что в браузере работает пхп для браузера. В консоли пхп для консоли с своими конфигами.

jek04
()
Ответ на: комментарий от nihirash

Расскоментил в /etc/php/7.0/cli/php.ini и заодно в /etc/php/7.0/apache2/php.ini extension=php_oci8_12c.dll

Добавил текущего юзера в www-data www-data:x:33:testuser

В /etc/apache2/envvars добавил
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib/

export TNS_ADMIN

export NLS_LANG

Перезапустил апач и все равно

   sudo php /var/www/html/ExpiredKU/ExpiredKU/check.php
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_oci8_12c.dll' - /usr/lib/php/20151012/php_oci8_12c.dll: cannot open shared object file: No such file or directory in Unknown on line 0
Версия программы : 2016-04-01<br>Получение данных через: rest<br>PHP Fatal error:  Uncaught Error: Call to undefined function oci_connect() in /var/www/html/ExpiredKU/ExpiredKU/check.php:36
Stack trace:
#0 {main}
  thrown in /var/www/html/ExpiredKU/ExpiredKU/check.php on line 36 

reyist
() автор топика

Так запускай его в корне через curl, например

madcore ★★★★★
()
Ответ на: комментарий от nihirash

Правильно ли понимаю, что такого файла не должно быть в линуксе php_oci8_12c.dll , а должен быть с расширением *.so ? В php.ini есть параметр extension-dir - это путь для динамически подгружаемых библиотек, и собственно оттуда и должен браться php_oci8_12c ? Но по какой-то причине такого файла в системе нет, хотя по логике его должна была создать установка через pecl или через пакеты из instant oracle client. Или я то-то опять упускаю...

reyist
() автор топика
Ответ на: комментарий от reyist

dll быть не должно

А еще ты можешь посмотреть в конфиге, используемом для веб-версии(я не знаю, что у тебя там) и сделать для cli аналогично.

nihirash ★★★
()
Ответ на: комментарий от nihirash

Пришлось качать и компилить отдельно oci8.so

pear download pecl/oci8
потом в /etc/php/7.0/cli/php.ini отдельно прописал extension_dir = /usr/lib/php/20151012/

сообщение
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20151012/php_oci8_12c.dll' - /usr/lib/php/20151012/php_oci8_12c.dll: cannot open shared object file: No such file or directory in Unknown on line 0
так и осталось, но скрипт выполнился, и крон тоже заработал
sudo crontab -u www-data -e
40 *  * * * /usr/bin/php7.0-cgi /var/www/html/site/check.php > /dev/null 2>&1
Где он хочет взять этот php_oci8_12c.dll я так и не понял...

reyist
() автор топика
Ответ на: комментарий от Radjah

Все, что нашлось адекватного

 sudo grep -i -r php_oci8_12c.dll /* 
/usr/share/php/.registry/.channel.pecl.php.net/oci8.reg:Export get_module() for Windows php_oci8_12c.dll";}i:15;a:4:{s:7:"version";a:2:{s:7:"release";s:5:"2.0.3";s:3:"api";s:5:"2.0.3";}

s:9:"stability";a:2:{s:7:"release";s:5:"devel";s:3:"api";s:5:"devel";}s:7:"license";a:2:{s:7:"attribs";a:1:{s:3:"uri";s:26:"http://www.php.net/license";}s:8:"_content";s:3:"PHP";}

s:5:"notes";s:254:"Add the oci_set_client_identifier() value and statement structure pointer to several DTrace probes.
/usr/share/php/.registry/.channel.pecl.php.net/oci8.reg:Update Windows builds to create only php_oci8_12c.dll.";}i:16;a:4:{s:7:"version";a:2:{s:7:"release";s:5:"2.0.2";s:3:"api";s:5:"2.0.2";}

s:9:"stability";a:2:{s:7:"release";s:5:"devel";s:3:"api";s:5:"devel";}s:7:"license";a:2:{s:7:"attribs";a:1:{s:3:"uri";s:26:"http://www.php.net/license";}s:8:"_content";s:3:"PHP";}

s:5:"notes";s:225:"Review and improve error handling code and data types.
но это, видимо, просто логи по установке для виндового клиента

reyist
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.