2013-12-10 77 views
0

我不知道如何搜索它,所以我在這裏問你。無法使用變量從包含的PHP文件

情況如下:

得到一個帶有根的vServer。 Apache,PHP5,MySQL已安裝並正在運行。

現在我有一個index.php我想要include 'config.php';。簡單的事情!

config.php我有一個變量,如$url = 'http://xxxxxxx';,但我不能在index.php訪問它。只有一個空陣列,當我print_r(parse_url($url));它。

好奇的是,當我用ssh連接到服務器並運行php index.php時,輸出結果如預期的那樣是整個陣列。

你有什麼想法?

+2

嘗試從'include'切換到要求。我能想到的唯一可能是導致你的包含文件未被找到。 – andrewsi

+0

剛剛嘗試過,它也不起作用。當我想包括一個不存在的文件,我的網站不加載任何東西(可能需要修復錯誤處理..) – SebaGnich

+0

我不確定你的意思;當你使用'require'時,你是否收到一條消息說它找不到該文件(因此不起作用)?或者它嘗試運行,但仍顯示爲'$ url'的空數組? – andrewsi

回答

1

您是否嘗試過將您的config.php包含在絕對路徑中,例如。包括( '/無功/網絡/ config.php中');

+0

是的,剛剛嘗試過。但它沒有幫助:( – SebaGnich

+0

嘗試var_dump($ url),看看它是否被識別 – user2428668

+0

它說'NULL'.. – SebaGnich

0

的配置文件,最好的策略是有它寫成如下格式:

<?php 
    return array(
     'url' => 'http://xxxxxxx', 
     ... 
    ); 

然後在你的index.php你可以做$config = require('wherever/it/is/config.php')和訪問像$config['url']您的參數。否則,你可能不得不使用全局變量,這幾乎不是一個好習慣。

+0

這是我以後想要做的,但現在我只需要訪問任何變量,之前擴展我的配置,謝謝! – SebaGnich

+0

好吧,那麼只要確保你使用的是'$ url'變量的全局版本',例如,如果你正在做你的包含,那麼試圖從函數內使用變量而不聲明它爲全球,它將是一個完全不同的變量。有關詳細信息,請參見[這裏](http://www.php.net/manual/en/language.variables.scope.php)。對不起,如果我說明了明顯的,但沒有完整的列表,我所能做的就是假設。 :) – bredikhin

+0

這甚至不是一個函數。包含後我無法訪問它.. – SebaGnich

0

該死的,我好蠢。

我有這樣的事情:

的config.php

foreach { 
    if(true){ 
     something; 
     return false; 
    } 
} 
$url = ...; 

我只是想阻止foreach如果它是成功的。也許工作也不錯..

但我不明白,爲什麼當php荷蘭國際集團它在終端..有沒有任何錯誤

謝謝你們!