«Ошибка синтаксического анализа PHP» и «Ошибка синтаксического анализа» в команде OS X Server Terminal - PullRequest
0 голосов
/ 27 августа 2011

Я запускаю скрипт PHP на сервере OS X 10.6 через терминал, как это:

cexa:~ soinro$ php /Volumes/dev1/cron/cron.php

И если в скрипте есть ошибки, я получаю вывод:

PHP Notice:  Use of undefined constant ccccc - assumed 'ccccc' in /Volumes/dev1/cron/cron.php on line 6
Notice: Use of undefined constant ccccc - assumed 'ccccc' in /Volumes/dev1/cron/cron.php on line 6
PHP Parse error:  syntax error, unexpected $end in /Volumes/dev1/http/~dev/_cron/cron.php on line 26
Parse error: syntax error, unexpected $end in /Volumes/dev1/http/~dev/_cron/cron.php on line 26

AsВы можете видеть, что каждое уведомление / ошибка отображается дважды: один раз как «Ошибка синтаксического анализа PHP» и один раз как «Ошибка синтаксического анализа».

Файл, который я вызываю, /Volumes/dev1/cron/cron.php.Если в этом файле есть ошибка, я получаю только «Parse error», но если в файлах require s есть ошибки, я получаю сообщения «PHP Parse error» и «Parse error».

Почемуэто происходит, и как я могу сделать так, чтобы я получал оба сообщения (или только те, которые не содержат «ошибки синтаксического анализа PHP») все время;

Ради обсуждения вот исходный код, который я называю:

ini_set('display_errors', 1);
$crons = array_merge(glob("/Volumes/dev1/http/*/_cron/*"), glob("/Volumes/dev1/http/~dev/*/_cron/*"));
foreach ($crons as $cron):
/* there is only one file in the array */
require_once $cron;
endforeach;
/* this is the endforeach I leave out when I want an error in this file */


и вот файл это require_once

$mails = $db->result("select * from newsletter where status = 'sending'");
/* there are 3 elements in $mails */
foreach ($mails as $mail):
echo 'x';
endforeach;
/* this is the endforeach I leave out when I want an error in this file */


Большое спасибо !!

1 Ответ

0 голосов
/ 27 августа 2011

Происходит следующее: у вас включены display_errors и log_errors.

Когда log_errors включено, PHP записывает ошибки вфайл, заданный параметром ini error_log (не путать с log_errors).Если error_log не установлено, ошибки записываются в стандартный вывод, поэтому вы видите их дважды.

Вы должны либо отключить один из display_errors и log_errors;или установить error_log для некоторого имени файла (или syslog , если вы хотите войти в syslog).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...