Jump to content
The Uniform Server Community

${US_ROOTF} wrong value when using php-cli.ini from CLI


Recommended Posts

Hi to everybody,

this is my first post here.


I've a problem sending email from php54 CLI.

The .ini file used is php-cli.ini from core\php54 folder.


But the ${US_ROOTF} variable in the .ini contain the user home directory in windows (ex. "C:\Users\username\AppData\Roaming\").


How about this strange behaviour?




Link to comment
Share on other sites



This is the code of test.php file:

ini_set('display_errors', '1');

mail("to@email.com", "Subject", "Line 1\nLine 2\nLine 3");

This is the command line to run the code:

F:\UniServerZ\core\php54\php -f F:\Home\Dropbox\test.php

This is the error message:

Impossibile trovare il percorso specificato.

that sounds like "unable to find the specified path" or something silimar (I use italian OS).


I think that the ${US_ROOTF} variable contains a wrong path value...


This is the command line to see the default configuration file loaded:

f:\uniserverz\core\php54\php -r "print (php_ini_loaded_file());"

the output result is:


php-cli.ini default file contains:

; PHP PHP 5.4.32 CLI  php-cli.ini    ;
; Uniform Server PHP CLI php-cli.ini ;


extension_dir = "./extensions"
;error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL 
date.timezone = "Europe/Rome"

sendmail_path = "${US_ROOTF}/core/msmtp/msmtp.exe --file=${US_ROOTF}/core/msmtp/msmtprc.ini  -t"


If I try to change sendmail_path configuration with

sendmail_path = "F:/UniServerZ/core/msmtp/msmtp.exe --file=F:/UniServerZ/core/msmtp/msmtprc.ini  -t"
the following error comes out:
F:/UniServerZ/core/msmtp/msmtp.exe: cannot log to C:\Users\utente\AppData\Roaming\core\msmtp\msmtp.log: cannot open: No such file or directory

and the email was correctly send. In the last error message I can see the USER HOME path so I think that ${US_ROOTF} contains it.


This solution is not the best...

What can I do?




Link to comment
Share on other sites

I assume you are running the following command line:


F:\UniServerZ\core\php54\php -f F:\Home\Dropbox\test.php


from a standard command prompt (cmd). What is missing are two environment variables HOME (required by msmtp.exe) and US_ROOTF (required by php-cli.ini)

UniController automatically creates these environment variables. For example run UniController and click "Server Console" button this opens a console window (command prompt). Now enter the command line:

php -f F:\Home\Dropbox\test.php

your script will run correctly. Generally if you are using the command line to run PHP scripts use this command prompt.

All the best

Link to comment
Share on other sites

You are right!!!

Thank you very much!!!


I never used the server console before...


Setting HOME and US_ROOTF variables from the batch before calling php is the right way to solve the problem.


Is there a method to force the server console environment to call custom batch?




Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...