我正在尝试从goDaddy共享主机上的perl脚本运行php脚本。我最初写的PHP脚本超过了120秒的时间限制和mySQL内存限制,因此我将脚本分成几个部分。
我希望这一切都作为一个cron作业运行,所以我想调用一个运行4-5个php脚本的perl脚本。
这是我的网站,与Drupal 7一起运行。
我编写了一个包含以下内容的perl脚本:
my $command = '/web/cgi-bin/php5 -q $HOME/html/phpscript1.php';
exec ($command) or print STDERR "couldn't exec $command: $!";
其中调用包含以下内容的PHP脚本:
<?php
define('DRUPAL_ROOT', getcwd());
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
....
do stuff
....
?>
但是当我从perl运行它(在我的$ HOME目录和html目录中都尝试过)时,我在运行脚本时会看到以下问题(其中XXXXXX是我的godaddy帐户文件夹):
<b>Notice</b>: Undefined index: SCRIPT_NAME
<b>/home/content/05/XXXXXXX/html/includes/bootstrap.inc</b> on line <b>1627</b><br />
<br />
<b>Notice</b>: Undefined index: REMOTE_ADDR in
<b>/home/content/05/XXXXXXX/html/includes/bootstrap.inc</b> on line <b>2802</b><br />
<br />
<b>Notice</b>: Undefined index: argc in
<b>/home/content/05/XXXXXXX/html/includes/bootstrap.inc</b> on line <b>3290</b><br />
我推断这些是FastGCI的问题,我可能需要定义/导出/指出这些索引/变量,但我无法找到广泛搜索后的操作。
PHP脚本使用CURL
将图像从外部服务器复制到我的服务器答案 0 :(得分:4)
您正在获取php通知,因为您在自定义php脚本中引导Drupal,并且这些变量未在cli上定义。
该PHP脚本可能更好地实现为Drush命令。 Drush已经设置了Drupal期望定义的所有变量,并为您提供了一个框架,可以在Drupal实例中轻松运行自定义代码。即使您不想打扰自定义命令,也可以像这样使用drush的脚本命令:
drush scr $HOME/html/phpscript1.php
此外,值得指出的是那些只是php通知。它们不太可能导致您的脚本出现任何问题。
答案 1 :(得分:0)
所以这里的答案是不要像在drupal站点中工作那样引导Drupal(例如在模块中创建函数)。相反,创建一个.php文件,其中包含您需要的功能,并在Drupal之外使用它(例如在您的html文件夹之上)。感谢Mark的快速帮助。