2016-06-19 3 views
-1

У меня проблемы с моим сайтом открытой корзины. Я хочу запустить cron-job через direct-admin. и я получаю это в моей электронной почте:PHP Замечание: Неопределенный индекс: SERVER_PORT в /xxx/xxx/xxx/domain.com/public_html/system/startup.php в строке 59

PHP Notice: Undefined index: SERVER_PORT in /xxx/xxx/xxx/domain.com/public_html/system/startup.php on line 59

код:

// Check if SSL 
if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) { 
    $_SERVER['HTTPS'] = true; 
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') { 
    $_SERVER['HTTPS'] = true; 
} else { 
    $_SERVER['HTTPS'] = false; 
} 
+0

Возможный дубликат [PHP: «Примечание: неопределенная переменная» и «Примечание: неопределенный индекс»] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined- index) – andrewsi

+0

Вы не указали много информации о своем задании cron, но 'SERVER_PORT' (вместе с некоторыми другими ключами' $ _SERVER') не имеет смысла в командной строке, поэтому не существует. –

ответ

0

Изменить этот if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) {

к этому:

if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || (isset($_SERVER['SERVER_PORT'])) && ($_SERVER['SERVER_PORT'] == 443)) {

Объяснение: Похоже, на вашем $_SERVER массив, SERVER_PORT недоступен - поэтому PHP показывает уведомление. Вы можете исправить это, проверив, существует ли ключ в массиве, прежде чем проверять, соответствует ли значение 443.

+0

Hello Muhammad, Я заменил его. Теперь я получаю следующую ошибку .: Ошибка PHP-анализа: синтаксическая ошибка, неожиданное «если» (T_IF) в /xxx/xxx/xxx/domain.com/public_html/system/system/startup.php в строке 59 –

+0

Привет, Мухаммад, спасибо за ответ снова, когда я заменяю код, весь сайт больше не работает. Так что я думаю, что это тоже не работает. –

1

Я считаю, что реальная проблема заключается в том, что команда вызывается из cron, а не с вашего веб-сервера (который заполнял бы массив _SERVER). В файле PHP все остальные ключи, кроме SERVER_PORT (например, _SERVER['DOCUMENT_ROOT']), заполняются с разумными значениями, если они не установлены.

Попробуйте добавить следующие строки перед преступлениями один (59):

if (!isset($_SERVER['SERVER_PORT'])) { 
    $_SERVER['SERVER_PORT'] = getenv('SERVER_PORT'); 
} 

и определить SERVER_PORT как переменные окружения перед запуском команды PHP. Если ваш порт всегда 80 или 443, вы также можете установить его прямо, а не получать его из среды.

1

Кажется, что ошибка в opencart-коде в system/startup.php. Вы можете увидеть открытый вопрос here

После решения сделали работу для меня:
изменения линии

if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) { 

с

if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || (isset($_SERVER['HTTPS']) && $_SERVER['SERVER_PORT'] == 443)) { 

Это лучше, если вы сделаете это с помощью vqmod, так что вы не» t изменить основной файл.

Смежные вопросы