TYPO3 Xdebug PhpStorm - typo3

For some reason I cannot get Xdebug to work in PhpStorm for a local (on my Mac) TYPO3 9.5 site. It's setup with Composer and the site resides on /Users/myusername/Sites/mysite
Xdebug is installed and on another local https://fun.test with a single test index.php file it works fine.
I have the ports correct, created a 'Run/Debug' configuration as PHP Web Page, start url https://mysite.test. On the server(mysite.test 443) of that config, I included (also tried not to) the path mappings. I also set the symlinks from the vendor bin map in the absolute paths. But whatever I try I keep getting
Debug session was finished without being paused
It may be caused by path mappings misconfiguration or not synchronized local and remote projects.
I watched the videos, but they are examples of an older TYPO3 version and also without https and don't work for me.
Any hints how to get it working?
UPDATED with parts of error log
-> <notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file:///Users/myuser/Sites/mysite/var/cache/code/cache_core/ext_localconf_f91d966404f45802fa2d2f505b0b6efa59cfb322.php" lineno="884" type="Notice"><![CDATA[Undefined index: adminpanel_requestcache]]></xdebug:message></notify>
-> <notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file:///Users/myuser/Sites/mysite/public/typo3/sysext/core/Classes/MetaTag/AbstractMetaTagManager.php" lineno="299" type="Notice"><![CDATA[Undefined index: allowedSubProperties]]></xdebug:message></notify>
-> <notify xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" name="error"><xdebug:message filename="file:///Users/myuser/Sites/mysite/public/typo3/sysext/core/Classes/Utility/GeneralUtility.php" lineno="3913" type="Notice"><![CDATA[Undefined index: makeInstanceService]]></xdebug:message></notify>

It's working now. In the PHP Web Page 'Run/Debug Configurations', server configuration I set the symlinks from the vendor bin map in the absolute paths and entered the absolute path for all main 'Project files' folders (which were not different, but after that it worked).

In my experience, the above error message is usually due to
Not synchronized project. If you created a remote project, you PhpStorm keeps a local copy of the files (typically in ~/PhpstormProjects/). Make sure the files you are debugging are synchronized (right-click on root: Deployment: download from)
Incorrect path mapping
That's kind of what the error message says, but intuitively I always underestimated the possible synchronization problem.
To narrow down the problem (just in case your breakpoints are just not being hit):
Select "Run: Break at first line in PHP scripts" to check what happens

Related

Search in files broken on SSH remote target

I have several RaspberryPIs as remotes in VSCode via SSH.
In some of them at some point the "search in files" feature has stoped working.
It is only searching inside the opened files.
[EDIT]
After further investigation I found out that on all the Raspberrys where the error occurs I can not install ripgrep. (E: Unable to locate package ripgrep)
As VSCode is using ripgrep for searching this may be the cause but what is the solution then?
[EDIT2]
I built and installed ripgrep manuall. No success.
But maybe it is related to the debian version being 9.X
As several people have reported the same problem but the cirumstances are always different I tried the following solutions:
Make sure the "book" icon is not checked (some users had that problem)
Make sure it is not related to path lenght. Just one folder in ~ with file a.py and b.py (some user had that problem)
Made sure there is nothing in the .gitignore file (some user had that problem)
Made a new folder not inside a samba shared folder (some user had that problem)
Deactivated all exensions on the remote
Deactivated all non SSH related extensions on the PC
Compared the setting on the broken remote to a working one. They are completely the same.
deleted the .vscode-server folder on the remote to force VSCode to install it again

js source maps disappears after modifying any file

I have a project with coffeescript and brunch.
There is following config for files concatenation:
files:
javascripts:
joinTo:
'js/app.js': /^app(\/|\\)(?!templates)/
'js/vendor.js': /^vendor/
templates:
joinTo:
'js/templates.js': /^app\/templates/
When I just clone this project and build it, all works fine - I see all my source files in developer console.
Then I do some harmless modifications in any file in project (like adding a useless variable declaration or duplicating "return" statement), and strange things happens:
A builded code is valid and works fine, but there are no source maps available.
If I disable source maps at all, I still can see some wrong behaviour:
And in the same time, origin build file is absolutely valid (can't post third link, sorry): it has '//# sourceMappingURL=app.js.map' line in the end, without any trailing spaces or whatever else.
Any ideas what can this be and how to solve this problem?
I've found where I was wrong.
First. About broken files loaded by browser.
As I noticed in comment above, the problem was in environment. My files are served by nginx, running inside Vagrant VM - and it seems, that sync between local files and VM was broken.
My solution was following:
disable caching in VirtualBox (machine settings -> tab 'Storage' -> select controller -> uncheck 'Use Host I/O cache');
edit nginx config and set 'sendfile off' option in 'http' section.
Not sure this is absolutely right solution, but after this correct files was loaded by browser.
Second. About still absent maps for app.js in Chrome.
It's just my inattention. I'm using Webstorm, and periodically it proposes to enable watcher for coffeescript files I open. And if you agree (what I've accidentally did missing 'Agree' button instead of 'Dismiss'), it will compile that file at his own, creating .map and .js files alongside origin .coffee - of course, no matter to your brunch or whatever else settings. These additional files are displayed as subfolders of .coffee file, so it is very likely that you do not notice them. And exactly these files Chrome does not like. Until you remove them all, Chrome will not display any source maps, no matter to .map file created by brunch - while for FF it's not a problem.

Zf Tool cannot find Zend Framework

Just started working with the Zend Framework Zf Tool and I've already come across a problem I've spent hours trying to figure out.
For some reason when I run the Zf show version command I get a ZF ERROR indicating it cant find the Zend Framework a to add it to my php.ini include_directory.
Here is my setup. I'm currently have WAMP installed on my local machine.
c:\wamp
I copied the zf.bat and zf.php files into the servers php directory. The path to the php directory has been added to the path environment variable. I'm pretty sure it works because I run the zf show version command in the console and get a ZF ERROR.
I keep my copy of the Zend Framework inside
c:\wamp\includes
So I added this to the php.ini include_path. include_path = ".;c:\wamp\includes"
I checked that this setting was set correctly by checking phpinfo() function. Which shows
include_path .;c:\wamp\includes .;c:\wamp\includes
So I think I have everything setup correctly. I can't work out what I'm missing.
I also tried setting the ZEND_TOOL_INCLUDE_PATH with no success.
Any help would be appreciated. PS I did check other posts here but none of the suggested
I have worked it out! Finally. The way I have my local wamp setup there is 2 php.ini files I have to edit.
The one that made the different is the php.ini inside the Apache2 directory.
Thanks everyone for their help. I appreciate it.
Well im not sure how you downloaded installed the framework but my guess is that you dont have enough of you include path based on the way Zend release packages are constructed. The Zend folder contained in the Zend Framework installation needs its parent folder to be on the include path so typically you would add something like:
c:\wamp\includes\ZF_BASE_DIR\library
This is because the zf package structure looks like:
ZendFramework-VERSION/
README.txt
INSTALL.txt
LICENSE.txt
bin/
library/
If you extracted ZF from the archive you will get a Zend-some_version folder, but the actual ZF is in
"include_path\Zend-some_version\library\Zend", so your include path should point include_path\Zend-some_version\library\
Just to add to what Tjorriemorrie said and to explain in detail how I got my installation on win 7 to work as simply as possible:
Download your preferred Zend package from "http://framework.zend.com/downloads/latest" to "C:\wamp\www\"
unzip your zip file so that you have the extracted Zend folder (with version name) under "C:\wamp\www\".
Rename your folder by removing the version so that you end up with "C:\wamp\www\ZendFramework"
Run a simple php file with phpinfo() in your browser. Note the entries for: "_SERVER["PATH"]" under PHP Variables
"Path" under Environment
"Loaded Configuration File" at the top
"include_path" under Core and
"extension_dir" under Core as well.
"_SERVER["PATH"]" and "Path" must be identical (no brainer)
There should be only one listing for your apache server and that should be the listing under "Loaded Configuration File" but without the "php.ini". So, if your "Loaded Configuration File" is "C:\wamp\bin\apache\apache2.2.22\bin\php.ini" you must have "C:\wamp\bin\apache\apache2.2.22\bin" in your path and that must be the ONLY reference to an apache server. If you have multiple references to apache servers Windows may pick the wrong one depending on your PATH order and use the wrong php.ini file.
Your "extension_dir" will tell you the version and location of php you are using. It is common to have different php folders lying around such as "C:\php", "C:\wamp\bin\php\php5.4.3", "C:\wamp\bin\php\php5.3....", etc. The extension directory will tell you which one of these php folders ZF will "reference" when it is looking for its library. For example, if your extension directory says "c:/wamp/bin/php/php5.4.3/ext/", you want to focus on "c:/wamp/bin/php/php5.4.3"
Go back to your PATH and a) add the string for this php version and b) remove all the other references to the other php folders
Now that you know your running and primary php and apache folders, shutdown (do not restart), shut down your computer and boot back up (restart does not always let the PATH completely reset.
Go to BOTH php.ini files at a) "C:\wamp\bin\apache\apache2.x.y\bin" and "C:\wamp\bin\php\php5.4.3" and find the include_path variable for Windows
Replace the default line, which looks like:
;include_path = ".;c:\php\includes;"
with
include_path = ".;c:\php\includes;C:\wamp\www\ZendFramework\library"
ON BOTH FILES just as Tjorriemorrie notes.
Restart All Services by clicking the wamp icon and selecting said option
At this point my zf tool was working. But, just to be safe, shut down and bootup
Smile and grab a beer!

Deleting files on remote server

I have a PHP project in NetBeans with remote files (over sftp). When I create, modify anything these changes happening both locally and on my web server. However when I'm trying to delete a file or a folder it gets erased only locally. What could be the problem?
Permissions seems to be ok, all files belong to the user I'm using to access the server.
I'm using Netbeans 6.9.1, default configuration, all updates installed.
Netbeans does not have a synchronization function. It is limited to downloading and uploading files. What you can do is to use some external tool, for example WinSCP is capable of synchronizing local and remote directories.
I read what you wrote... but I think it could be a permissions problem.
I also use NetBeans and when I delete a file from the project window it first erase it locally and then syncs with my server.
I login through sftp (using vsftp) as root, which is a bad thing, but you could try this too to be sure if it's a permission issue.
You mistakenly turned off the settings. Please follow these steps:
Right click on the project name
Select properties
From the list of the left select 'Run configuration'
On the left almost down, look for the setting 'Upload files:'
Make sure you set that to 'On Save'
All the best man

Zend Studio and remote host - best practice

Got the following:
Zend Studio
Zend Framework Project
Remote host with FTP and SSH (root access)
Want to:
Save directly to remote host.
Currently i'm working on a localhost *AMP server, manually updating the remote through FTP.
Have tried various ways to acomplish the above - unsuccessfull obviously.
Can some one tell me what to do? Studio 5 (pre-eclipse) was so much better for pure 'FTP programming'.
/Philip
Currently i'm using remote server support for synchronize my project directly with my i5 server.
It works using ftp or sfpt if you have enabled SSH on your server machine.
It works very well.
Before using remote server support you have to set up a connection
to the server: go to window menu > open perspective > other >
remote system explorer
set up a connection to your server
Return to php develop perspective
To add the "support to remote server" to an existing project, click on the project with rigth click > properties > Remote Server Support
Flag enable Remote connection properties
Set-up all properties and select upload files "on save"
In this way, ZS work locally on the file's project (index, build files ecc) and upload on the server only the .php and .js files.
It can works very well with svn suppor too, because it DOESEN'T upload (.svn) files to the server but keeps it local.
Whatever you do, don't use Expandrive. That's what I'm working with now, and it grinds ZSE to a crashing halt. Sometimes, Expandrive just stops working and ZSE thinks the file disappeared, so you have to close everything and anything not saved is lost.
EDIT: One solution that's worked for us is using the SMB protocol, using Windows' SMB compatibility to create a remote drive, and then interacting with your code base that way. Make sure to ignore building large static files or large files you won't be directly editing to further speed up Eclipse when building a project this way.
You can use 3rd party utilities:
Expandrive for OSX
Netdrive (commercial) or FTPDrive (free)
to mount FTP/SFTP to drive or folder so you can work as it is locally.