簡體   English   中英

在php中寫入文件時出錯

[英]Error while writing to a file in php

在我的本地計算機上測試以下代碼時,未報告任何錯誤。 但是在工作的服務器上對其進行測試后,出現了以下奇怪的錯誤:php未在服務器上寫入文件。

我正在使用的代碼:

 $myfile = fopen( "results/co".$a[$i].".txt", "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

因此,在這種情況下不會創建文件。 當我嘗試將文件名“ results / co”。$ a [$ i]。“。txt”替換為其值時:“ results / co00112test.txt”:

 $myfile = fopen( "results/co00112test.txt", "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

它工作正常。

我還嘗試了以下方法:

 $name = "results/co".$a[$i].".txt";
 $myfile = fopen( $name, "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

但是沒有希望。

此錯誤的原因可能是什么?

如果在放置一些靜態文件名時代碼工作正常,則很明顯變量$a[$i]是錯誤的。

您可以通過這種方式進行調試:

$name = "results/co".$a[$i].".txt";
var_dump($name);

該名稱應該顯示一些奇怪的內容,並且可以告訴您文件的內容。

可能全是因為權限。 您的php用戶無權訪問要在其中創建文件的文件夾,也無權訪問要嘗試編輯的文件(如果文件已經存在)。

您可以在此處閱讀有關權限的完整文章(關於ubuntu,但實際上與哪個操作系統無關): https : //help.ubuntu.com/community/FilePermissions

您可以嘗試使用權限644,或者如果它不起作用,則可以使用777。644更安全,因為只有文件所有者可以編輯它,而操作系統的任何用戶都不能。

您可以像這樣更改文件夾及其所有文件/文件夾的權限:

chmod -R 644 /path/to/folder/

我認為644是文件的標准配置,755是目錄的標准配置。

您可以這樣更改文件/文件夾的所有者:

chown name_of_user:name_of_group /path/to/folder

您的文件名以雙零字符開頭,因此可能是一個問題。

這將不起作用:

$number = 112;
$file_name = "results/co".$number."test.txt";

這應該工作:

$number = 112;
$number_pad = str_pad($number, 5, '0', STR_PAD_LEFT);
$file_name = "results/co".$number_pad."test.txt";

暫無
暫無

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

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