2013-10-10 66 views
0

回答下列問題!帶命令行的PHP fopen()

所以我有一個PHP腳本,通過網絡工作知府。我想將其設置在運行虛擬主機的服務器上的計劃任務上。它是一個Windows 2008 R2服務器。我似乎運行良好,減去它不會輸出文件的事實。我需要有完整的路徑名嗎?前C:\日誌....或將在下面的工作?我想讓腳本在網頁和命令行中都能正常工作。

$File3 = "" . $log_dir . "/" . date('m-d-Y') . ".txt"; 
$Handle3 = fopen($File3, 'a+'); 

$Data3 = "blah"; 
fwrite($Handle3, $Data3); 

更多信息:

這裏是從日誌文件中的錯誤:

的fwrite()預計參數1是資源,在C定的boolean:\網站\ WordPress的\ WIN \進口.php on line 686

PHP警告:file_get_contents(bins/bins-10-09-2013.txt):未能打開流:C:\ Websites \ wordpress \ win \ import.php中沒有這樣的文件或目錄在線692

PHP警告:fwrite()期望參數1是資源,布爾在C:\ Websites \ wordpress \ win \ import.php在線699

PHP警告:fclose()期望參數1是資源,布爾值在C中給出:\網站\ WordPress的\ WIN \ import.php上線709

WORKING !!那麼,這就是我一直在做的事情,而且似乎很有效。

$File = "" . $uploads_dir . "/import-" . date('m-d-Y-g-ia') . ".txt"; 
$Handle = fopen($file1, 'a+'); 
if ($Handle === false) { 
    $File = "C:\Websites\wordpress\win\\".$uploads_dir."\import-" . date('m-d-Y-g-ia') . ".txt"; 
    $Handle = fopen($File, 'a+'); 
} 

這樣我就可以通過網頁和通過窗口在計劃任務上使用php腳本。

回答

0

看來fopen無法打開文件。確保文件成功打開:

$Handle3 = fopen($File3, 'a+'); 

if($Handle3 === false) echo 'Unable to open file'; 

如果失敗,請檢查以下項目一個在時間:

  • 檢查文件/文件夾的權限。
  • 用不同的斜槓"/""\"檢查路徑中。
  • 檢查它是否適用於絕對路徑(完整路徑)。
  • 通過改變目錄來檢查前fopenchdir('path\to\php\script')
  • 等。

如果問題與路徑,一路使它工作這兩種情況是:

// First try with the path that works from web 
$File3 = "" . $log_dir . "/" . date('m-d-Y') . ".txt"; 

$Handle3 = fopen($File3, 'a+'); 

if($Handle3 === false) 
{ 
// It failed so may be scheduled task invoked the script 
// So use the path that works in invoked by scheduled task 
    $File3 = "path\that\works\from\command\line"; 
    $Handle3 = fopen($File3 ,'a+'); 
} 
if($Handle3 === false) 
{ 
    echo 'Failed to open file'; 
    exit; 
} 
else 
{ 
// What ever 
} 
+0

是的,這是我去的路線。編輯組織問題。 –

0

我從來沒有使用fopen或fwrite的完整url。這些是我首先會看到的東西:

  • 當您echo $ log_dir時,輸出是什麼?
    • 該目錄是否存在?
  • 是否正確設置權限?
  • 如果您在運行腳本之前創建文件,那麼它是否成功寫入文件?
  • fopen後$ Handle3的值是多少?
  • 你在最後一行調用的fwrite的返回值是多少?
  • 錯誤處理設置爲全部? (它應該用於調試)