从Perl脚本运行PHP

时间:2012-10-18 02:44:25

标签: php perl drupal fastcgi

我正在尝试从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

将图像从外部服务器复制到我的服务器

2 个答案:

答案 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的快速帮助。