2013-10-01 55 views
-2

想從包含的php中調用函數。我做的:不能從包含的php文件中調用函數

<?php 
include 'http://localhost:9090/myapp-backend/login.php'; 
$lg = new Login(); 
$lg->login(); 
?> 

的login.php:

<?php 
class Login 
{ 
    public function login() { 
     //*some code 
    } 
} 

結束錯誤:

Fatal error: Class 'Login' not found in D:\xampp\htdocs\myapp\index.php on line 3 

當我不在login.php使用類只是一個功能,我得到的功能不存在錯誤。
什麼錯?

+4

如果它來自本地主機,爲什麼你試圖通過HTTP而不是它的文件路徑包含它? –

+0

如果這是在一個開發Windows框上運行,我99%肯定它不會工作 - 你不能通過HTTP包含文件。 – CD001

+0

在瀏覽器中打開http:// localhost:9090/myapp-backend/login.php,你會得到什麼? PHP得到完全一樣的......! – deceze

回答

2

,以確保它是跨平臺兼容(使用PHP 5的不斷__DIR__),你可以使用更多的東西像這樣(雖然,我也傾向於使用require_once像這樣不是文件包括)。

//assuming you're calling the include from the a file at the root of the web server 
include realpath(__DIR__ . '/myapp-backend/login.php'); 

//or using require_once 
require_once realpath(__DIR__ . '/myapp-backend/login.php'); 

儘管Windows對於使用'/'或'\'作爲目錄分隔符非常不利。

參見:http://php.net/manual/en/function.realpath.php

對於舊版本的PHP(即有__FILE__不變,但不是__DIR__常數),你可以使用下面的 - 但實際上,這不應該是必要的任何更多:

require_once realpath(dirname(__FILE__) . '/myapp-backend/login.php'); 

請參閱:http://uk3.php.net/manual/en/function.dirname.php

3

遠程文件的include將僅包括結果(即由遠程服務器生產),而不是代碼的源

使用include本地(本地FS),以獲得源 - 因爲你指的是本地主機

-1

必須在您的系統,而不是一個虛擬目錄使用的路徑。 如:

include 'C:/myapp-backend/login.php'; 
+0

不工作'要求'C:/xampp/htdocs/myapp-backend/glogin.php';'給我'沒有這樣的文件或目錄' –

+1

你寫了'glogin.php'嗎? – vikingmaster