1

goDaddy 共有ホスティングで perl スクリプトから php スクリプトを実行しようとしています。私が最初に書いた PHP スクリプトは、120 秒の時間制限と mySQL メモリ制限を超えているため、スクリプトをいくつかの部分に分割しています。

これをすべて 1 つの cron ジョブとして実行したいので、4 ~ 5 個の php スクリプトを実行する単一の perl スクリプトを呼び出したいと考えています。

これは、Drupal 7 で実行されている私の Web サイト用です。

次の内容の 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スクリプトでDrupalをブートストラップしていて、それらの変数がCLIで定義されていないため、php通知が届きます。

その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 に答える