1

我正在尝试从我的 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 将图像从外部服务器复制到我的服务器

4

2 回答 2

4

您收到 php 通知是因为您在自定义 php 脚本中引导 Drupal,并且这些变量未在 cli 上定义。

该 php 脚本可能会更好地实现为Drush命令。Drush 已经设置了 Drupal 期望定义的所有变量,并为您提供了一个框架,可以在 Drupal 实例中轻松运行自定义代码。即使您不想费心编写自定义命令,也可以像这样使用 drush 的脚本命令:

drush scr $HOME/html/phpscript1.php

此外,值得指出的是,这些只是 php 通知。它们不太可能导致您的脚本出现任何问题。

于 2012-10-18T04:28:07.000 回答
0

所以这里的答案是不要像在您的drupal 站点中工作时那样引导Drupal(例如在模块中创建函数)。相反,创建一个包含您需要的功能的 .php 文件并在 Drupal 之外使用它(例如,在您的 html 文件夹上方)。感谢马克的快速帮助。

于 2012-10-18T05:38:30.630 回答