我正在嘗試在特定文件夾中寫入文件,但它給了我 permission returned
。
因此,我驗(yàn)證了權(quán)限,一切似乎都正常。因?yàn)檫@是在開(kāi)發(fā)環(huán)境中,所以我決定將寫入所有文件的“根”文件夾的權(quán)限更改為“每個(gè)人都可以做任何事情”。我嘗試替換下面的所有權(quán)限。我試圖刪除繼承的權(quán)限。什么都做不了。
然后我嘗試在“根”文件夾中寫入一個(gè)文件。它起作用了。在子文件夾上,它起作用了。在子子文件夾上。有效。在子文件夾鏈中,有一個(gè)點(diǎn)不起作用,但在真正的子文件夾之前。
這是崩潰時(shí)的路徑層次結(jié)構(gòu)。
$f = new \wee\common\IO\File(); $f->write("DRIVE:/BASE_PATH/files/-/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/00.jpg", "hello"); // WORKS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/00.jpg", "hello"); // WORKS $pathLength = strlen("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg"); // Real path length is 85 $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg", "hello"); // FAILS $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/00.jpg", "hello"); $f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/workers/00.jpg", "hello");
類 \wee\common\IO\File
是我創(chuàng)建的,但可以在很多其他地方使用。
我收到的確切錯(cuò)誤消息是:
fopen(DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg):無(wú)法打開(kāi)流:權(quán)限被拒絕
百分百清楚:“根”文件夾是 DRIVE:/BASE_PATH/files/
這里是File
類的write
方法的實(shí)現(xiàn)。
public function write($fileName, $data, $lock = false) { $this->_write($fileName, $data, $lock); } private function _write($fileName, $data, $lock = false, $openMode = 'w') { if ($data === null) $data = ""; $fh = fopen($fileName, $openMode) or die("can't open file"); // FAILS HERE if ($lock) { flock($fh, LOCK_EX); } fwrite($fh, (is_array($data) ? join("\n", $data) : $data)); if ($lock) { fflush($fh); flock($fh, LOCK_UN); } fclose($fh); }
該問(wèn)題來(lái)自 PHP 5.6.26。使用 PHP 5.6.40 修復(fù)了這個(gè)問(wèn)題。
我重置為原來(lái)的權(quán)限,一切都很好!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)