Edit report at https://bugs.php.net/bug.php?id=80258&edit=1
ID: 80258
Updated by: cmb@php.net
Reported by: josh dot manchester at dirxion dot com
Summary: Windows Deduplication Enabled, seeing randon
permission errors
-Status: Open
+Status: Feedback
Type: Bug
Package: SQLite related
Operating System: Windows 2016 Standard
PHP Version: 7.4.11
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Thanks for reporting!
I don't have a machine at hand where I could turn on
deduplication, but I suspect that this regression has been
introduced by fixing bug #79806[1]. Could you please check
whether adding "C:\System Volume Information" (or just C:\ for
quick testing) would solve the open_basedir issue, and that
everything with that SQLite3 database works like before?
[1] <http://git.php.net/?p=php-src.git;a=commit;h=d5b59b4303642adac91df2c93969a72bc0f5fa7d>
Previous Comments:
------------------------------------------------------------------------
[2020-10-19 13:14:10] josh dot manchester at dirxion dot com
Description:
------------
We have Windows deduplication enabled on our 2016 servers for several years but I think we found
something out of whack with the latest PHP version. I originally upgraded from 7.4.7 to 7.4.11, when
I had problems I then attempted to downgrade to 7.4.10 and the problem remained, but with 7.4.9 I
have no issues. While our primary web product had some 'Unable to find resource' type
errors loading, the simplest example I can provide is our health check script that we have setup for
testing Database connectivity. On versions 7.4.11 and 7.4.10 the SQLite check fails with the error
I provided under Actual Result.
I am using the Windows PHP NTS build as provided on your site. I tested this on 2 servers, and each
server would start to work if I either downgraded to php 7.4.9, or disabled Deduplication and ran
the powershell script to unoptimize all the files.
Test script:
---------------
<?php
include 'includes/autoload.php';
//SQLite
$db_path = 'abb20htm.db3';
$db = new PDO('sqlite:'.$db_path);//connection
$bookdb3_class = new BookDb3($db);
$sgt = '3';//res
$row = $bookdb3_class->getFirstPageLabel($sgt)->getResults();
//$bookdb3_class->printOut();
//print_r($row);
$pageLabel = $row['PageLabel'];
if ($pageLabel == '1')
echo 'SQLite test succeeded';
else
echo 'SQLite test failed';
echo '<br>';
?>
Expected result:
----------------
Via a browser, we expect to see...
SQLite test succeeded
Actual result:
--------------
Note: My original health check script had some MySQL and MSSQL health checks that I removed in my
example, so line 39 is no longer accurate.
Fatal error: Uncaught PDOException: open_basedir prohibits opening abb20htm.db3 in
F:\Sites\ITMonitors\dbtests\default.php:39 Stack trace: #0
F:\Sites\ITMonitors\dbtests\default.php(39): PDO->__construct('sqlite:abb20htm...') #1
{main} thrown in F:\Sites\ITMonitors\dbtests\default.php on line 39
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80258&edit=1