2012-10-18 2 views
1

내 goDaddy 공유 호스팅에서 펄 스크립트에서 PHP 스크립트를 실행하려고합니다. 원래 작성한 PHP 스크립트는 120 초의 시간 제한과 mySQL 메모리 제한을 초과하므로 스크립트를 여러 부분으로 나눕니다.Perl 스크립트에서 PHP 실행

이 모든 것을 하나의 cron 작업으로 실행하려면 4-5 개의 PHP 스크립트를 실행하는 단일 Perl 스크립트를 호출하고 싶습니다.

my $command = '/web/cgi-bin/php5 -q $HOME/html/phpscript1.php'; 
exec ($command) or print STDERR "couldn't exec $command: $!"; 

다음과 같은 것을 포함하는 PHP 스크립트를 호출 : 나는 다음과 같은 내용으로 펄 스크립트를 작성했습니다 7

이 드루팔 실행 내 웹 사이트입니다

<?php 

define('DRUPAL_ROOT', getcwd()); 

include_once DRUPAL_ROOT . '/includes/bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
.... 
do stuff 
.... 
?> 

그러나이 스크립트를 실행할 때 다음과 같은 문제가 발생합니다 (XXXXXX는 내 하나님입니다.) 애디 계정 폴더) :

<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 스크립트에서 드루팔을 부트 스트랩하고 있기 때문에 당신은 PHP는 통지를 받고있어, 그 변수는 CLI에 정의되지 않은 CURL

답변

4

를 사용하여 내 서버에 외부 서버에서

PHP 스크립트 복사 이미지.

PHP 스크립트는 아마도 Drush 명령으로 더 잘 구현 될 것입니다. Drush는 이미 Drupal이 정의 할 것으로 예상되는 모든 변수를 설정하고 Drupal 인스턴스에서 사용자 정의 코드를 쉽게 실행할 수있는 프레임 워크를 제공합니다. 사용자 정의 명령을 작성 귀찮게하지 않았더라도, 당신은과 같이 drush의 스크립트 명령을 사용할 수 있습니다

drush scr $HOME/html/phpscript1.php 

또한, 그 그냥 PHP 고지 있다는 지적 가치가있다. 스크립트로 인해 문제가 발생하는 것은 거의 없습니다.

+0

유용한 의견을 보내 주셔서 감사합니다. 아직 실행중인 코드에 대해 옳았지만 오류가 염려되었습니다. 나는 drush를 설치하려했지만 루트 액세스가 없다고 생각합니다 (어리석은 goDaddy) –

0

그래서 여기에 대한 답은 드루팔 (Drupal) 사이트에서 작업 할 때 (예 : 모듈에서 함수를 만드는 것처럼) 드루팔 (Drupal)을 부트 스트랩하지 않는 것입니다. 오히려 필요한 기능을 가진 .php 파일을 작성하고 Drupal 외부에서 사용하십시오 (예 : html 폴더 위). 빠른 도움을 주신 Mark 께 감사드립니다.

관련 문제