Le 23/08/2019 à 05:04, Heather Lotz a écrit :
After some more testing, it seems that this syntax -
<IfFile "Z:/files/development/ApacheSmokeSignal.txt">
is the root cause of Apache not starting when the external storage device, mapped to Z:, is detached from the Windows 10 PC.

I tested these variants individually, which are more *nix like -
<IfFile "Z/files/development/ApacheSmokeSignal.txt">
<IfFile "/Z/files/development/ApacheSmokeSignal.txt">
<IfFile "/z/files/development/ApacheSmokeSignal.txt">
and the behavior is Apache starts whether or not Z: is attached to the PC, so that is a step in the right direction.  However, the code within the <IfFile> tags never executes because when localhost:8080/miscellaneous/ is entered in a browser it always returns a 404 error.

Another test was this -
<IfFile "/c/Users/heather.lotz/Documents/_user_files/test.txt">
which points to an existing file which is not stored on Z:.  The behavior here was the same as that of the 3 *nix like tests. Apache starts whether or not Z: is attached to the PC but code within the <IfFile> tags is not executed because localhost:8080/miscellaneous/ returns a 404 error.

Does this constitute a bug of <IfFile> when used on a Windows OS?

------------------------------------------------------------------------
*From:* Heather Lotz <kno...@hotmail.com>
*Sent:* Wednesday, August 21, 2019 9:36 PM
*To:* users@httpd.apache.org <users@httpd.apache.org>
*Subject:* Re: [users@httpd] conditionally create a Virtual Host?
A new file was created on Z: for the sole purpose of having a designated file for Apache to seek.
The file is  called Z:\files\development\ApacheSmokeSignal.txt.

Here is what httpd-vhosts.conf looks like now:
<IfFile "Z:/files/development/ApacheSmokeSignal.txt">
<VirtualHost *:8080>
 DocumentRoot "Z:/files/xampp/htdocs"
 <Directory "Z:/files/xampp/htdocs">
  Options Indexes
  Require all granted
 </Directory>
</VirtualHost>
</IfFile>

With this update in place, Apache starts fine when Z: is attached to the PC.  However, when Z: is not attached to the PC Apache does not start and these lines appear in the XAMPP Control Panel console:
9:30:24 PM  [Apache]  Attempting to start Apache app...
9:30:24 PM  [Apache]  Status change detected: running
9:30:26 PM  [Apache]  Status change detected: stopped
9:30:26 PM  [Apache]  Error: Apache shutdown unexpectedly.
9:30:26 PM  [Apache]  This may be due to a blocked port, missing dependencies, 9:30:26 PM  [Apache]  improper privileges, a crash, or a shutdown by another method.
9:30:26 PM  [Apache]  Press the Logs button to view error logs and check
9:30:26 PM  [Apache]  the Windows Event Viewer for more clues
9:30:26 PM  [Apache]  If you need more help, copy and post this
9:30:26 PM  [Apache]  entire log window on the forums

There are no entries in error.log with a Wed Aug 21 21:30 or later timestamp.

Is the syntax incorrect?  Note that Apache is installed in this location on the PC in question: C:\xampp\apache.

------------------------------------------------------------------------
*From:* Eric Covener <cove...@gmail.com>
*Sent:* Wednesday, August 21, 2019 7:27 PM
*To:* users@httpd.apache.org <users@httpd.apache.org>
*Subject:* Re: [users@httpd] conditionally create a Virtual Host?
On Wed, Aug 21, 2019 at 8:21 PM Heather Lotz <kno...@hotmail.com> wrote:
>
> Greetings,
>
> In my development environment on a Windows 10 PC I have added the following to Apache's configuration files -
>
> To httpd.conf:
> Listen 8080
>
> To httpd-vhosts.conf:
> <VirtualHost *:8080>
>     DocumentRoot "Z:/files/xampp/htdocs"
> <Directory "Z:/files/xampp/htdocs">
>  Options Indexes
>  Require all granted
> </Directory>
> </VirtualHost>
>
> Note that Z: is mapped to an external storage device.
>
> With this setup, Apache successfully accesses C: on port 80 and Z: on port 8080.  However, if the external storage device is not attached to the computer, Apache will not start.  Is there a way to check if Z: is present, and only create the virtual host if that device is plugged in so that Apache always starts?  If so, how can this be achieved?

Try <IfFile> https://httpd.apache.org/docs/2.4/mod/core.html#iffile

--
Eric Covener
cove...@gmail.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Hi,


would you have the opportunity to test the attached patch?

The 0 passed to apr_stat looks spurious to me. (but should work)



(Pure speculation)
Also, based on Microsoft doc, could you also try:

<IfFile "\\.\Z:">
...

and
<IfFile "\\.\Z:\">

...


CJ
Index: server/core.c
===================================================================
--- server/core.c       (révision 1864756)
+++ server/core.c       (copie de travail)
@@ -2949,7 +2949,7 @@
     apr_finfo_t sb;
 
     relative = ap_server_root_relative(cmd->temp_pool, arg);
-    return (apr_stat(&sb, relative, 0, cmd->pool) == APR_SUCCESS);
+    return (apr_stat(&sb, relative, APR_FINFO_TYPE, cmd->temp_pool) == 
APR_SUCCESS);
 }
 
 static int test_ifdirective_section(cmd_parms *cmd, const char *arg)
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to