簡體   English   中英

如何在PHP中處理命令行腳本的路徑(Windows)?

[英]How to handle paths in PHP for command line scripting (Windows)?

我將PHP用於正在構建的命令行工具。 我的工具必須在Windows和基於* NIX的系統上均可使用。 我在Ubuntu Linux中的主要開發環境。

我想知道我每次處理文件時是否應該照顧自己的目錄分隔符,還是PHP會照顧我呢? 例如:

在Linux中:

$user_home = get_user_home_folder();
$filePath = "{$user_home}/path/to/file.txt";

上面的代碼是否可以在Windows上運行而無需修改,還是應該始終執行以下操作:

$user_home = get_user_home_folder();
$filePath = "{$user_home}/path/to/file.txt";
if(is_windows_os()) {
   $filePath = str_replace('/','\\',$filePath);
}

任何建議都非常感謝。

這將為您工作:

<?
$filePath = "/path/to/file.txt";

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    //windows
$filePath = getenv('HOME').str_replace("/", "\\", $filePath);
echo $filePath;
} else {
    //linux
$user_home = get_user_home_folder();
$filePath = $user_home.$filePath;
echo $filePath;
}
?>

在我的情況下(Windows)不勝枚舉:

C:\Users\Administrator\path\to\file.txt

筆記:
我從未聽說過一個名為get_user_home_folder()的php函數,我認為這是一個自定義函數。

這也許可以幫助您。

define('DS', is_windows_os() ? '\\' : '/');
$user_home = get_user_home_folder();
$filePath = $user_home.DS."path".DS."to".DS."file.txt"

使用常量DS作為路徑,並將根據需要自動更改分隔符

PHP會盡可能嘗試將“ /”轉換為正確的分隔符。 如果您不想依賴該行為,它還會提供一個稱為DIRECTORY_SEPARATOR的內置常量。

該常數和join函數可以很好地一起構建路徑。

例如$fullPath = join(DIRECTORY_SEPARATOR, [$userHome, 'path', 'to', 'file.txt']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM