gpt4 book ai didi

PHP scandir() 在 cifs 挂载上失败,直到 php-fpm 重新启动

转载 作者:IT王子 更新时间:2023-10-29 00:22:32 67 4
gpt4 key购买 nike

下面的设置在一段时间内可以正常工作。最终,CIFS 主机脱机(补丁、电源等)。当这种情况发生时...PHP 似乎失去了理智并拒绝访问挂载点中的文件,直到 php-fpm 重新启动,尽管操作系统完全可以访问 CIFS 共享。

Warning: scandir(repository/Some Series/Some Title): failed to open dir: No such file or directory in /var/www/audiobooks/libraries/bookScan.php on line 169

关于我遗漏的任何指示,以便不需要重新启动 php-fpm?


我在 linux 服务器上有以下挂载点:

//10.68.x.x/Media/Audiobooks on /var/www/audiobooks/repository type cifs (rw,relatime,vers=default,cache=strict,username=xxxxxx,domain=/,uid=48,forceuid,gid=996,forcegid,addr=10.68.x.x,file_mode=0755,dir_mode=0775,soft,nounix,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)

运行以下代码:

public function getBookFiles($book)
{
$path = $book["path"];
$files = scandir($path);
$files = array_diff($files,array('..','.'));
return $files;
}

附加说明:

PHP-FPM 重启修复了这个问题。操作系统在中断期间访问这些文件没有问题。

[root@audiobook audiobooks]# stat /var/www/audiobooks/repository/Some\ Series/Some\ Title/01\ Some\ Title.mp3
File: '/var/www/audiobooks/repository/Some Series/Some Title/01 Some Title.mp3'
Size: 4170169 Blocks: 8152 IO Block: 16384 regular file
Device: 77h/119d Inode: 179 Links: 1
Access: (0555/-r-xr-xr-x) Uid: ( 48/ apache) Gid: ( 996/ nginx)
Access: 2018-03-31 17:09:58.810843700 +0000
Modify: 2018-03-21 20:33:16.000000000 +0000
Change: 2018-04-01 05:58:06.448224400 +0000
Birth: -

PHP 版本:

php72-php.x86_64                        7.2.4-1.el7.remi              @remi-safe
php72-php-cli.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-common.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-fpm.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-json.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-mbstring.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-pdo.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-pecl-http.x86_64 3.1.1~RC1-2.el7.remi @remi-safe
php72-php-pecl-propro.x86_64 2.0.1-4.el7.remi @remi-safe
php72-php-pecl-raphf.x86_64 2.0.0-5.el7.remi @remi-safe
php72-php-pecl-zip.x86_64 1.15.2-1.el7.remi @remi-safe
php72-php-xml.x86_64 7.2.4-1.el7.remi @remi-safe
php72-runtime.x86_64 1.0-1.el7.remi @remi-safe

最佳答案

首先尝试测试目录是否存在且可读(更好的是,将其包装在一些类方法中)。

如果测试失败,并且您怀疑是由于 CIFS 擅离职守,请尝试发出 clearstatcache()。如果操作系统可以访问共享,这意味着内部 SMB 缓存是可靠的,但对于 PHP 副本来说可能并非如此,它在 FPM 模块内共享和集中。

关于PHP scandir() 在 cifs 挂载上失败,直到 php-fpm 重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513738/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com