【发布时间】:2018-05-11 11:08:09
【问题描述】:
这是文件test1.php:
<?php
set_time_limit(0);
for($i= 1;$i<5000 ;$i++){
$comm_sjis = "echo 'test'";
$result = exec($comm_sjis);
}
unset($result);
echo 'ok';
这是文件test2.php:
<?php
set_time_limit(0);
function write_txt($str)
{
$filepath = 'E:/temp/test.xml';
if (($fp = @fopen($filepath, "a")) === false) {
return;
}
if (!flock($fp, LOCK_EX)) {
@fclose($fp);
return;
}
if (fwrite($fp, $str . "\n") === false) {
@flock($fp, LOCK_UN);
@fclose($fp);
return;
}
if (!fflush($fp)) {
@flock($fp, LOCK_UN);
@fclose($fp);
return;
}
if (!flock($fp, LOCK_UN)) {
@fclose($fp);
return;
}
if (!fclose($fp)) {
return;
}
}
for($i= 1;$i<100 ;$i++){
write_txt('test');
unlink('E:/temp/test.xml');
}
echo 'ok';
如果我在运行 test1.php 的同时运行文件 test2.php,则会出现错误:
警告:unlink(E:/temp/test.xml): Permission denied in C:\xampp\htdocs\test2.php on line 45
当我只运行test2.php,没有test1.php时,不会出现这个错误。 为什么 unlink 在我执行函数时会给出 Permission denied 错误?
我在 Windows 7 上使用 XAMPP 3.2 与 php 5.6。
【问题讨论】:
-
这是因为您的 XML 文件或文件夹需要取消链接该文件的权限
test.xml -
test1 和 test2 似乎彼此不匹配。 test1 是做什么用的,你在哪里创建 test.xml?
-
@Nawin:如果不运行文件test1.php,只运行文件test2.php,就可以了。
-
@Forbs : write_txt('test');创建 test.xml
-
好的,首先,根据命令,您将连接它们,然后调用 exec 命令。比如说,每 5 次迭代你就会调用 exec。其次,有更好的方法可以在不使用 @ 的情况下避免错误和/或警告,这是非常不鼓励的。在您的情况下,您可以使用 php.net/manual/pt_BR/function.is-resource.php 检查资源是否有效,而不是仅仅将其静音。
标签: php