Сценарий php 5.5.14, который подключается к базе данных для извлечения данных и отправки их веб-службе, отлично работает при запуске в консоли, но не работает в cronjob (crontab).Когда cronjob выполняет сценарий, соединение с базой данных через драйвер pdo_oci не устанавливается, и вместо этого создается исключение «PDOException» с сообщением «SQLSTATE []: (null)».
Я уже несколько раз пытался найти ошибку, но ничего не помогло.Сначала я проверил установку php через php -m и php -v в cronjob и сравнил модули и версию с версией php при вызове от имени пользователя.Установленные модули и версия были идентичны.Во-вторых, я позволяю cronjob работать под моим пользователем с помощью команды su -u user crontab -e.Затем я зарегистрировал все учетные данные и все, чтобы убедиться, что строка подключения идентична той, которая вызывается напрямую.Строка подключения оказалась идентичной.Я просто не могу понять, почему скрипт запускается при запуске непосредственно в консоли, но не в cronjob.
Следующая строка устанавливает соединение с базой данных через драйвер pdo_oci:
$con = new PDO('oci:dbname='//dburl:port/dbserver, dbuser, dbpassword);
Сценарий выполняется с помощью crontab следующим образом:
*/1 * * * * /usr/bin/php /path/to/script/phpscript.php -params
Как указано выше, обычно соединение устанавливается, но при запуске с помощью cronjob возникает исключение 'PDOException' с сообщением 'SQLSTATE []: (null)брошен.Как ни странно, скрипт уже запущен на другом сервере, и там все отлично работает.
Я знаю, что используемая версия php очень старая, моя задача - выполнить миграцию 1: 1, и мне не разрешенообновить версию php.