"Project file changed" issue in PhpStorm during working remotely - connection

I have CIFS mounted folder on my PC, where houses a PHP project.
And very often dialog box appears with the message:
Project file /path/to/mounted/directory/.idea/workspace.xml" has been
changed externally. It is recommended to reload project for changes to
take effect.
I don't make any changes in this file, but PhpStorm thinks sometimes that file was changed and shows this dialog.
This directory mounts on system startup, and this is the corresponding fstab string:
//host/path /media/server cifs _netdev,credentials=/home/user/.smbcredentials,iocharset=utf8,sec=ntlm,uid=1000,gid=1000 0 0
This mount settings I've made today. Before that the directory was mounted through sshfs and all was OK without this annoying dialog box.
How can I resolve this problem?

I've found a current solution, I hope that this can help everyone that is encountering this issue.
**Go** to Settings (File->Settings (Ctrl+Alt+S) )
and reach Appearance & Behavior-> System Settings
uncheck all 4 options of Synchronization.
This is how I managed to fix this problem, now I don't have to
reverse commit,
No dialog box that the project has been modified externally and no workspace.xml popping up in SourceTree.

Related

Docker cannot read file which has been changed in PhpStorm

Docker cannot read mounted file which has been edited in PhpStorm. It looks like this in docker:
And the cat composer.json shows then:
cat: composer.json: Input/output error
Sometimes cat helps to return file back to live.
At the same time there is no problem with Sublime usage. Therefore I guess there reason is hidden somewhere in PhpStorm setting, but which ones?
My main (and only) suspect is Settings (Preferences on macOS) | Appearance & Behavior | System Settings | Synchronization | Use "safe write".
When enabled (which is by default) it writes into temp file first, then deletes original and renames temp file. When doing that the new file may loose owner/access permissions info (at very least it was in some cases in the past).
Try disabling that option and see how it goes.

Same VSCode-Settings for the whole crew?

We want to have the same VSCode settings for the whole crew of developers. Also it would be fine to have a oneline command to tear VSCode down and restart it from scratch with predefined settings and plugins so that you do not have to worry about trying out plugins and getting beck to the known state. Kind of Config-as-Code for VSCode.
I already found:
https://code.visualstudio.com/docs/editor/extension-gallery#_command-line-extension-management
https://github.com/microsoft/vscode-dev-containers
https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync&ssr=false#qna
https://github.com/gantsign/ansible-role-visual-studio-code-extensions
https://code.visualstudio.com/docs/remote/containers
https://github.com/gantsign/ansible-role-visual-studio-code
But non of these provides a good solution to me
We are using Mac and Windows machines and develop most of the time locally (not remotely in the cloud or the like).
I imagine like having a script like
.... projectname up
or
.... projectname reset
(or
.... projectname down)
to receive/reset the configured settings and newest plugins that have been configured for the project.
Have any ideas or use a similar solution already?
After doing a lot of research, playing with Docker, Ansible and so on... it seems that although I excluded it at first the plugin Settings Sync Plugin from Shan Khan is the way to go. It has round about 1 million installs!
Only dependency - you need a GitHub account to host your configs. That is what held me back at first - but it should be not that much of a problem to get one for everyone in the team and connect it to like a company-github-account.
Copy the files settings.json and keybindings.json to your target machine(s) to copy the settings. You can find those files here:
Win: ~\AppData\Roaming\Code\User
Mac: ~/Library/Application Support/Code/User/
Linux: ~/.config/Code/User
You can copy extentions from ~/.vscode/extensions or C:\Users\username\.vscode\extensions from linux/mac or windows respectively.
FalcoGer's answer should explain how to copy the files in a way VS Code will pick them up. If you only need to copy the config files once, this solution would be fine.
If you need to "sync" these config files on a regular basis, I would advise to create a Git repository where all config files will be stored.
When cloning the repo to local machines, you can symlink the files to the config destinations (see FalcoGer's anwser). Then when you need to "sync", you only have to run git pull and restart VS Code to apply the changes.
For your other script-related question, you could create a CLI for this. Python would be the most friendly way to do this. You can find an example here.

Cannot find the daemon.json file in windows 10 after docker-desktop installation

I installed the docker-desktop in windows 10 using the installer. Now i want to see the configuration file daemon.json. The official documentation says that
The default location of the configuration file on Windows is %programdata%\docker\config\daemon.json
But i cannot find a folder %programdata%\docker.Instead, the folder C:\ProgramData\DockerDesktop exists. But that doesn't have a daemon.json file in it.
Can someone help me to find why this is so and where can i find daemon.json?
On my system the file is at %userprofile%\.docker\daemon.json.
Right click Docker icon in taskbar > Click Settings > Click Docker Engine
You can update that, and it should work. I'm on Docker Engine v19.03.8.
The path C:\ProgramData\Docker\config\daemon.json, as described in Microsoft documentation, is correct, or also correct.
I think the file is not created until you change it on GUI. Once you change it on GUI,the file will be were is supposed with the exact content you apply.

Unable to revert or restore changes in a folder mapped to a different Volume (macOS)

There's a problem with TFS everywhere plugin for Eclipse if I try to revert or restore a file under a source control and if the folder/file is mapped to a different volume than the actual project.
When I try to restore or revert it, I get an error:
java.io.IOException: Failed to rename /Users/*/*/*/*/.tf1/8/d54f18aa-bdce-4ab7-958a-01eaaf0c36c1.tmp to /Volumes/macOSData/*/*/*/*/*/some_file.cs. Check the file and directory permissions.
Log has additional line:
2018-07-31 12:44:39,814 WARN [ModalContext] (com.microsoft.tfs.util.FileHelpers) Main rename failed (source permissions problem?), trying to rename temp file back
There's no problem while I get specific version of the project, even with overriding existing files, so there permissions are fine, at least for getting files. Also, this does not happen when the file is on the same volume as the local TFS mapping.
Setting all permissions to 777 does fix the problem, but this marks all files with +x making them all "changed", making this solution unacceptable.
I tried mapping the base folder to a second drive (i.e. force creating a .tf folder on a second drive), but this doesn't help. The error will appear when I try to revert stuff on the main volume.
I tried using symlinks so the mapping stays within the same volume, but still no luck.
Is there any way to solve this? Or everything should be on the same volume?
After a whole day of digging around and poking with jshell, this appears to be a bug with File.renameTo() in Java on macOS. renameTo function silently fails without any exception even though there's no permission issue to write to the destination. This happens only when writing to a different volume.
I have submitted a pull request into TFS Everywhere repo on github with a workaround for this issue.
Anyone interested can compile plugin with this changes to get things working:
https://github.com/Microsoft/team-explorer-everywhere/pull/276

localhost refused to connect Error in visual studio

I have copied my solution file from another system and tried to run it on my machine:
For this, I have gone to the project folder and deleted the previous solution file and copied the new one.
Now, it started giving me error. connection refused etc. So, I got one solution from here: How to solve ERR_CONNECTION_REFUSED when trying to connect to localhost running IISExpress - Error 502 (Cannot debug from Visual Studio)?
According to it, I changed the port number from 1049 to 1052. It loaded and one of the pages gets loaded.
But when I entered the desired login credentials then it redirected to the older port again, like this:
http://localhost:1049/Home/SearchFlight
and the error is:
This site can’t be reached
localhost refused to connect.
Search Google for localhost 1049 Home Search Flight
ERR_CONNECTION_REFUSED
Now, I don't know what to do from here. I have changed the port number to 1052 but still its pointing to 1049. What should i do now?
I had a similar issue. Try this and it should work
Go to your project folder and open the .vs folder (keep your check hidden item-box checked as this folder may be hidden sometimes)
In the .vs folder open the config folder
See that applicationhost.config file there? Delete that thing. (Do not worry it will regenerate automatically once you recompile the project.)
Usually on local machine we are getting errors like This site can't be reached localhost refused to connect because we have self signed certificate configuration broken for local IIS Express. Sometimes it happens when you change URLs in launchSettings.json or never configured self signed certificates on this machine at all.
To fix self-signed certificate on the local machine you need to: 
Delete .vs folder (requires to close Visual Studio 2017)
Run these commands in cmd As Administrator:
cd "C:\Program Files (x86)\IIS Express"
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:12345/ -UseSelfSigned
Make sure you run VS2017 As Administrator and check if the issue addressed
Note: https://localhost:12345/ is what is in your launchSettings.json for HTTPS
Changing port number has resolved the issue
Just Delete the (obj)Object folder in project folder then Run the application then It will work fine.
Steps:
Right Click on the project folder then select "Open folder in file Explorer".
Then Find the Obj folder and Delete that.
Run the Application.
Unfortunately, none of these answers worked for me. This answer finally did for Chrome only. Unfortunately, you have to do it each time:
Open this in your browser: chrome://net-internals/#hsts
Go to Delete domain security policies
Enter "localhost"
Restart browser
Google Chrome redirecting localhost to https
I had the same problem. Deleting .vs folder (including all contents, folder might be hidden) worked for me.
I solved a similar problem by listing bound IP addresses in a cmd window running as admin:
netsh http show iplisten
Then, one by one, blowing them all away:
netsh http delete iplisten ipaddress=127.0.0.200
netsh http delete iplisten ipaddress=127.0.0.2
...
In my case, I need to update "publishAllPorts" = false in .Net 5 MVC project's launchSettings.json.
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"publishAllPorts": false
}
I ran my Visual Studio as "Run as administrator" and this solved my problem.
Go to control panel > Programs and feature > IISExpress > Repair
If found it was because I had been messing about with netsh http add commands to get IIS Express visible remotely.
The symptoms were:
the site would fail to connect in a browser
the site would fail to start (right click IIS Express in the Taskbar and it was missing)
if I ran Visual Studio as admin it would start in IIS Express and be visible in the browser
The solution was to list all bound sites:
netsh http show urlacl
then delete the one I had recently added:
netsh http delete urlacl url=http://*:54321/
In addition I had removed localhost from the hidden solution folder file .vs\config\application.config for the site:
<bindings>
<binding protocol="http" bindingInformation="*:54321:" />
</bindings>
so had to put that back:
<bindings>
<binding protocol="http" bindingInformation="*:54321:localhost" />
</bindings>
This happened to me in VS2017 v 15.6.7 using .net core 2.0.
When the project first launched it created an SSL Cert for localhost and started fine. When I disabled SSL I kept getting this issue.
Apparently when you disable SSL the port numbers are changed and not all of the port numbers get changed to the new port. Make sure port numbers on Debug are all the same number.
I was having this issue and solved it by closing all open instances of Visual Studio.
Open cmd as administrator and run this command:
netsh http delete iplisten ipaddress=xxx.xxx.x.xxx
ipaddress is your private ip.
This worked for me.
I faced this annoying problem all the time in my Visual Studio MVC application especially when you start your work in the morning. Many solutions in this thread works sometimes; but there were many times none of this solves my issue.
At last I figured out only a combination of these steps works for me. Hope this helps somebody.
Close VS.
Delete .vs folder under your solution. Don't worry, it will be automatically created when you open the solution again.
Delete bin and obj folders.
Delete your cookies from the browser that you use to debug the application.
Delete the *.csproj.user file located in the project folder.
Open your startup project file (*.csproj) in Notepad++ or your favorite editor. Go towards the end of the file and delete below 3 lines that contains the local development port info. Don't worry it will be recreated on running the solution again.
<DevelopmentServerPort>0</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>http://localhost:60573/</IISUrl>
Open your solution again, clean, build and run it. You should be good to go. If this don't work, restart your machine after step 6.
For this to work for me, all I had to do was recreate the virtual directory. I had re-installed Windows and then pulled the project back out of Git. To do this, right-click on the solution project and choose Properties, then go to the Web tab and click the Create Virtual Directory beside the Project Url.
I hope this helps someone else too!
Bud
Project properties> Web > Create Virtual Directory worked for me
Right Click on Project >> Properties >>
Select Web Tab >> Under server Select "Use Visual development server"
so indirectly it will uncheck "Local IIS Server"
Hope so it may resolve this issue.
Change the port number and remove script debugging (if enabled) to resolve in localhost.
I've tried everything but nothing worked, but this did.
If you can debug on local IIS instead of Express, change the configurations as shown in the image below. Do not forget to click on "Create virtual directory"
rebooting the machine was the only thing that worked for me
I recently ran into this exact problem and tried most of the suggestions but it turns out my problem was something different.
Our application has a section that redirects you to HTTPS if you are on HTTP (yes, I know there are better ways but this is legacy). In addition, there is special handling of localhost when you are in dev mode which redirected you back to HTTP, though I don't know why.
I have a new requirement that requires testing in HTTPS.
On a normal web page, changing http:// to https:// and calling Redirect would work fine but in IISExpress you are using custom ports. So for example, if you are on https://localhost:44300 you can't just switch to http://localhost:44300 b/c that port only serves https, not http.
So, if you are having this problem and you've cleared the config files and it didn't help, check your code for redirects. you might have something using a hardcoded or partially hardcoded url or a url from a config file that you haven't updated to https.
Update:
I also suggest clearing all .suo and .user files and someone else suggested clearing the obj/ folder. I suggest doing this with VS closed and then restarting. I had a lot of trouble with values for ports being cached when i tried to setup https:// and change ports. I also suggest trying this suggestion to check that the SSL port is within the correct range, though I don't know if that is still a requirement https://stackoverflow.com/a/24957146
In my case, Visual Studio 2017 > Tools > Options
In Debugging menu in the side list find Edit and Continue
Uncheck the Enable Edit and Continue check box
This resolves my problem.
Same problem here but I think mine was due to installing the latest version of Visual Studio and having both 2015 and 2019 versions running the solution. I deleted the whole .vs folder and restarted Visual Studio and it worked.
I think the issue is that there are multiple configurations for each version of Visual Studio in the .vs folder and it seems to screw it up.
Sometimes https and http ports can be same because if two tags are given same ports
IISExpressSSLPort and DevelopmentServerPort
Make sure these two ports have different ports
then in IISUrl use your default port either HTTP or HTTPS
https://localhost:44365
For HTTPS Use IISExpressSSLPort
For HTTP Use DevelopmentServerPort
Then you may delete hidden .vs folder in solution folder
Try deleting cookies for your localhost
My problem turned out to be a property which called itself:
Once I fixed this, the misleading connection error message disappeared.
None of these solutions worked for me. I'm not 100%, but I think my issue might have been with running the same project on the same port from multiple branches. That used to be an issue for me on Local IIS --- I'm not sure if that's also an issue on IIS Express. What worked for me was following this solution:
https://stackoverflow.com/a/27033934/2133723
Which says to go to:
File -> Open -> Web Site...
and remove the relevant projects. After this, I was able to run the project without changing the port.
Prior to doing this, I had followed the other solutions posted on this question (which didn't help me), such as deleting the .vs folder, so I'm not sure if that would be a necessary step prior to removing the website from File -> Open -> Web Site....
Like Donny V. this happened to me in VS2017 using .net core 2.0.
When the project first launched, VS displayed a dialog, offering to create an SSL Cert for localhost - but I didn't want to use SSL, so I stopped running and went into Project Properties and disabled SSL (a checkbox that can be cleared). After doing that I kept getting the issue described.
After trying many things what actually resolved the issue for me was editing the launchSettings.json file located under [ProjectName]/Properties - it's accessible from Solution Explorer.
When the editing was complete, the contents looked like this (where 12345 is a Port Number, and where MyNETCoreApp is the name of the project).
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:12345/"
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "http://localhost:12345/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyNETCoreApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:12345/"
}
}
}
The edits I made were:
Updated the Port Numbers so they were all the same number
Removed a key:value of ssl:0 in one spot
Updated all https:// instances to be http://
I had to add https bindings in my local IIS

Resources