2012-01-02 50 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