2012-01-02 2 views
3

Привет им пытаются выполнить файл PHP из Баш скриптОшибка при выполнении PHP скрипт из Баш

#!/bin/sh 

php ./func.php 

и func.php файл выглядит как

<?php 

echo "php file"; 

И как выход PHP Warning: Module 'apc' already loaded in Unknown on line 0

EDIT: И, может быть, U может также рассказать мне, как передать параметр в файл php?

+2

Вы пробовали проверить файл конфигурации кли (в системе Ubuntu было бы, например, находиться в '/ и т.д./php5/кли/php.ini') для ссылок к модулю 'apc'? И это ваш полный файл 'func.php'? Мне кажется неполным (по крайней мере, закрытие '?>' Отсутствует) – codeling

+3

@nyarlathotep Оставляя закрытие '?>' [Является лучшей практикой] (http://stackoverflow.com/a/4453835/35070). – phihag

+0

@phihag: спасибо за подсказку! писал PHP-код в течение длительного времени, но не знал, что - кажется, я должен прочитать о лучших практиках :) – codeling

ответ

8

Ошибка в Unknown on line 0 означает, что ваша конфигурация неисправна (это не имеет никакого отношения к bash - прямое выполнение программы должно давать одно и то же сообщение).

В вашем случае у вас есть два экземпляра extension=apc.so в вашей конфигурации php. Используйте grep apc.so /etc/php5/cli/ -r, чтобы найти их.

+0

Отлично, спасибо! – ChocoDeveloper

+0

Спасибо +1! Вы не знаете, откуда эта дублирующая линия? У меня также было ... active = 1 строка, дублированная в ini-файле. – Benj

2

Узнайте, какой php.ini используется в режиме CLI:

php --info 

и проверить содержимое этого php.ini для двойного декларирования extension=apc.so

1

Всех ответов выше намекал на то, что происходит , но это был факт, что был загружен отдельный файл apc, поэтому просто grepping для «extension = apc.so» не выявил проблему.

php --info | grep -i apc 
PHP Warning: Module 'apc' already loaded in Unknown on line 0 
Additional .ini files parsed => /etc/php5/cli/conf.d/apc.ini 

Так, так как был загружен модуль, вы просто должны удалить «расширение = apc.so» как от вашего апача и Cli php.ini конфиги.

+0

'php -info | grep -i apc' сделал трюк – Dmitriy

0

В моем случае (на Ubuntu, на основе Linux на основе Debian) у меня было две копии apc.ini в /etc/php5/conf.d/. У меня был тот, который я поставил там, когда я впервые установил apc. Я также нашел символическую ссылку от /etc/php5/conf.d/20-apc.ini до ../mods-available/apc.ini.

Похоже, что некоторое обновление php позволило этому модулю «Debian way» (с символической ссылкой). Я удалил свою копию apc.ini, и теперь я использую только тот, который символически связан с mods-available.

Копаем дальше, есть программы командной строки, которые должны использоваться для включения и отключения модулей PHP под Ubuntu и Debian. Вот команды для включения и отключения APC:

sudo /usr/sbin/php5enmod apC# Creates the symlink in /etc/php5/conf.d that enables APC 
sudo /usr/sbin/php5dismod apC# Deletes the symlink in /etc/php5/conf.d that disables APC 
Смежные вопросы