2012-01-02 26 views
3

嗨即时试图从bash脚本错误而来自bash的执行PHP脚本

#!/bin/sh 

php ./func.php 

func.php文件看起来像

<?php 

echo "php file"; 

而作为输出执行PHP文件 PHP Warning: Module 'apc' already loaded in Unknown on line 0

编辑: 也许U也可以告诉我如何将参数传递给PHP文件?

+2

您是否尝试过检查CLI配置文件(在Ubuntu系统也将设在'/等/ PHP5/CLI/php.ini'如上)的引用模块'apc'?这是你完整的'func.php'文件吗?看起来不完整(至少关闭'?>'丢失) – codeling 2012-01-02 11:51:21

+3

@nyarlathotep退出关闭'?>'[是最佳实践](http://stackoverflow.com/a/4453835/35070)。 – phihag 2012-01-02 11:52:42

+0

@php:谢谢你的提示!一直在写PHP代码很长一段时间,但不知道 - 看来我应该阅读最佳实践:) – codeling 2012-01-02 11:54:22

回答

8

Unknown on line 0中的错误意味着您的配置有缺陷(这与bash无关 - 直接运行程序应该产生相同的消息)。

在你的情况下,你的php配置中有两个extension=apc.so的实例。使用 grep apc.so /etc/php5/cli/ -r找到这些。

+0

完美,谢谢! – ChocoDeveloper 2012-11-18 15:35:30

+0

谢谢+1!你有什么想法这个重复的行从哪里来?我也有一个... active = 1行ini文件中重复。 – Benj 2013-01-22 11:06:57

2

找出哪些php.ini在命令行模式下使用:

php --info 

,并检查php.ini的内容的extension=apc.so

1

高于发生了什么暗示答案的所有双重声明,但事实上,有一个单独的apc文件正在被加载,所以简单地对“extension = apc.so”进行grep并没有发现问题。

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 

所以自从被加载的模块,你只需要简单地从两个你的apache和CLI的php.ini CONFIGS删除“延长= apc.so”。

+0

'php --info | grep -i apc'做了诀窍 – Dmitriy 2013-04-04 17:51:39

0

在我的情况下(在Ubuntu上,一个基于Debian的Linux变体),我有/etc/php5/conf.d/apc.ini的两个副本。当我第一次安装apc时,我有一个放在那里的东西。我还发现从/etc/php5/conf.d/20-apc.ini../mods-available/apc.ini的符号链接。

看来,一些升级的PHP,启用这个模块的“Debian方式”(与符号链接)。我删除了我的apc.ini副本,现在我只是使用符号链接到mods-available的那个。

进一步挖掘,有一些命令行程序应该用来在Ubuntu和Debian下启用和禁用PHP模块。以下是启用和禁用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