【发布时间】:2017-10-29 14:11:57
【问题描述】:
所以,我有一个脚本可以调用另外两个备份设备的脚本。
问题是,如果我手动调用主脚本,在屏幕会话中打开另外两个,一切正常。 它调用的 2 个脚本基本上通过 php 脚本将数据发送到 sql 服务器。
IE 我有这条线
$link = mysql_connect("server ip", "username", "password", "database");
手动运行(从我的用户目录运行)它工作正常。
如果我运行了 cron 作业,它会运行良好,当它到达脚本的 php 部分时会出现错误
PHP Fatal error: Call to undefined function mysql_connect() in /export/home/myname/my_Scripts/php_script_its_running
所以,如果我手动运行它,而不是当我通过 cron 运行它时,它可以正常工作,我假设它正在运行不同的 php 实例,因为它是由 cron 运行的,或者类似的奇怪的东西?或者,idk,还不是 100% 熟悉 cron 作业。
所以当我更多地调试它时,它看起来使用的 php 版本与我的用户帐户使用的不同,5.1 与 5.4 相比
不确定是否有一种简单的方法可以将其更改为使用我的用户帐户 php 设置?不幸的是,我没有对该盒子的root访问权限。
回答 所以,我运行了一个工作脚本,并添加了 phpinfo(),获取了路径信息并将其添加到 cronjob 中,这样它就会覆盖默认值。
所以 cronjob 文件的顶部看起来像
SHELL=/bin/bash PATH = /usr/kerberos/bin:/app/php-5.4.3/bin
【问题讨论】:
-
如果不确定,您可以使用 'which php' 安排 cron 作业以查看它是否是正确的实例。我还会检查你的脚本的权限(或者只是将它们设置为 777 以测试权限是否是问题)。
-
这是一个美好的夜晚,在我发布问题后想通了,如果其他人有这个问题,我会编辑问题。