php命令列(cli)模式下報require 載入路徑錯誤的解決方案_php技巧

來源:互聯網
上載者:User

今天,同事突然告訴我,我寫的一個做計劃任務的php指令碼執行總是不成功。

  指令碼本身很簡單,裡面只有包含了幾個庫檔案並執行了一個函數,函數應該沒有錯誤,這個函數在別處也調用過,沒有問題。我在本地用瀏覽器訪問頁面,執行成功,看來沒有問題,我有點懷疑是同事的計劃任務的問題。我又開啟命令列,用php直接執行指令碼,這回報錯了,是require 包含檔案錯誤,看來是路徑不對。

  不明白是什麼原因引起的,只是從報錯來看是路徑不對,我猜測是跟相對路徑有關,於是把相對路徑的全部改成絕對路徑,再執行,問題解決。

  在百度上搜尋之後,知道是用php執行指令碼時,執行指令碼的位置是當前執行php命令的路徑,所以相對路徑就不對了。解決問題的辦法有兩個:

  一、改用絕對路徑,這個比較麻煩,所有包含的檔案包括直接包含的檔案裡包含的檔案路徑,有一個不對就有可能出錯,所以只有當執行檔案比較簡單的時候可用。

  二、使用chdir函數,改變當前執行目錄,把目錄改為檔案所在目錄,chdir(dirname(__FILE__));

最後,簡單介紹下PHP的cli命令列模式吧

首先,進入PHP的CLI(Command line interface) mode

cyguin-> $ ./php --ini(顯示設定檔資訊)

將顯示:

configuration file(php.ini) path: c:/WindowsLoaded configuration file: c:/wamp/bin/php/php5.3.0/php.iniscan for additional .ini files in: (none)additional .ini files parsed: (none)

$./php --help (會顯示PHP具體資訊)
$./php --rf <name> (顯示<name>函數的資訊)
$./php --fc <name> (顯示<name>類的資訊)
$./php --re <name> (顯示<name>擴充的資訊)
$./php --ri <name> (顯示<name>擴充的配置)

$./php -l <file> : 檢查文法
如:$./php -l c:/wamp/www/1.php 
運行結果: No Syntax errors detected in xxx

$./php -v :顯示版本資訊和運行模式cgi/cli
運行結果:
PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

$./php -f <file>:解析並執行檔案
如:$./php -f c:/wamp/www/1.php

$./php -h :顯示協助檔案

$./php -r <code> : 運行PHP代碼,不需要使用<?php ?>標籤
如:$./php -r 'print("hello!");' 或 $./php -r 'echo "hello!";'
運行結果: hello!

$./php -a :進入互動模式
在linux下會出現:
php>
在windows下:
需要輸入:

<?phpecho "hello world!";?>


然後ctl+c,以獲得輸出。
在PHP5.3.0中,不能直接這樣用,因為不能直接得到結果。

<?phpecho "hello world!";?>

先輸入ctl+z,然後再輸入ctl+c,就會得到結果。

$./php -c : 指定尋找php.ini的位置,或者指定一個特定的ini檔案。

$./php -n : 不使用php.ini

$./php -d foo [=bar] : 定義INI檔案中foo entry的值是bar

$./php -m : 顯示所有的模組,php modules和zend modules

$./php -e : Generate extended information for debugger/profiler

$./php -B <begin_code> : 處理標準輸入簽執行的代碼。PHP5新加。
如:
$./php -B 'echo "hello world";'
輸出結果:hello world

$./php -R <code> : 為每一行執行的php代碼。PHP5新加。

$./php -F <file> :

$./php -H <end_code> : 處理完輸入後執行的代碼

$./php -s : 顯示HTML文法高亮的代碼

$./php -w : 得到去掉空格和注釋後的代碼
如:
$./php -w c:/www/1.php

$./php -z <file> : 載入Zend擴充檔案

$pwd :顯示當前路徑

--enable-cli, --enable-cgi

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.