Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Built-in functions marked as undefined #990

Closed
IanVS opened this issue Feb 3, 2020 · 51 comments
Closed

Built-in functions marked as undefined #990

IanVS opened this issue Feb 3, 2020 · 51 comments

Comments

@IanVS
Copy link

IanVS commented Feb 3, 2020

Describe the bug
Just recently, intelephense has started marking lots of function calls as undefined, for instance is_null and array_map.

To Reproduce
Install version 1.3.6 or later. Seems to work fine in 1.3.5.

Expected behavior
Built-in functions are not flagged as undefined.

Screenshots
image

Platform and version
OS and Intelephense version.
MacOS 10.15. Versions mentioned above.

@bmewburn
Copy link
Owner

bmewburn commented Feb 3, 2020

Have you modified any of the default settings? These definitions are bundled with the extension and controlled with the intelephense.stubs setting.

@IanVS
Copy link
Author

IanVS commented Feb 4, 2020

I hadn't, no. After I got the errors, I tried setting my php version to 7.3, with no observable effect.

@ffl-russellweed
Copy link

I'm having the same issue. Reverting to 1.3.5 fixed it for now.

Only extension setting I have changed from default is "intelephense.format.enable": false

@christopheralert
Copy link

I noticed the same issue. sqlsrv commands also started popping up red around this time. Reverting to 1.3.5 also fixed it for me.

I noticed "sqlsrv" was no longer included in the stubs settings. However, adding it back did not resolve the issue, whereas rolling back the version did.

@ilyaguy
Copy link

ilyaguy commented Feb 10, 2020

Intelephense doesn't know about deprecated functions.
I have old project which run on php5.6 and intelephence show error "intelephense: Undefined function 'mysql_fetch_assoc'."

@KapitanOczywisty
Copy link
Contributor

@ilyaguy Set "intelephense.environment.phpVersion": "5.6.0" and add "mysql" to "intelephense.stubs"

@joyfullservice
Copy link

Same problem here, even with built-in php functions like preg_replace and json_encode. Reverting to version 1.3.5 got me back up and running again.

@ffl-russellweed
Copy link

I got the later versions working. I failed to notice a crucial step in the Quick Start:

Disable the built-in VSCode PHP Language Features.

Whoops. Doing so and restarting made everything work correctly.

@bmewburn
Copy link
Owner

bmewburn commented Jun 1, 2020

Is this still a problem in 1.4?

@ffl-russellweed
Copy link

This was still happening as of version 1.4.1/1.4.0.

I decided to check my @builtin php extensions and accidentally turned off "PHP Language Basics", which did syntax highlighting. After turning it back on and restarting, now everything is working?

@bosconian-dynamics
Copy link

bosconian-dynamics commented Jun 20, 2020

Happening for me on the following configuration:

  • Windows 10 Pro x64 18362.900
  • Intelephense v1.4.1
  • Default Intelephense configuration
  • PHP 7.4.0
  • PHP Language Features disabled
  • PHP Language Basics enabled
  • Additional PHP extensions: PHP Debug, PHP DocBlocker, PHP Sniffer

Toggling either of the built-in language packages has no effect. Toggling the other PHP extensions has no effect.

@bosconian-dynamics
Copy link

bosconian-dynamics commented Jun 20, 2020

I just set "intelephense.environment.phpVersion" to something else - "7.0.0" in this case - and the standard-lib functions stopped highlighting as undefined. In removing the setting thereafter (defaulting to "7.4.0" once again) the effect persisted.

Seems like changing the the PHP version setting rebuilt the relevant cache with whatever was initially missing?

@artfulrobot
Copy link

artfulrobot commented Jul 15, 2020

I get the same (using intellephense 1.3.11) but on mine it says built-in functions are deprecated:

image

(edit: I reinstalled and now it seems happy)

@ccjjmartin
Copy link

I am running the v1.5.4 of PHP Intelephense on the latest version of VSCode for Debian based installs and running into this issue. Specifically I am within a file that uses a namespace and anything (function, class, etc) in the global space is showing as undefined, when I define it as within the global space by adding a \ in front of it, it still shows as undefined.

The error might be related to hitting save too quickly. If I reindex the workspace the error goes away but if I hit save (within say 4-5 seconds) and trigger a check of the file the error comes back, however if I wait a while before hitting save the error seems to stay away. I am using a huge code base with millions of lines of code so maybe it isn't finishing indexing and this is what causes the error?

I found it in another thread but ctrl + shift + p > index workspace is how I am reindexing.

I have tried uninstalling and installing this extension from scratch but that did not fix it.

@fernandopsilveira
Copy link

I am running the v1.5.4 of PHP Intelephense on the latest version of VSCode for Debian based installs and running into this issue. Specifically I am within a file that uses a namespace and anything (function, class, etc) in the global space is showing as undefined, when I define it as within the global space by adding a \ in front of it, it still shows as undefined.

The error might be related to hitting save too quickly. If I reindex the workspace the error goes away but if I hit save (within say 4-5 seconds) and trigger a check of the file the error comes back, however if I wait a while before hitting save the error seems to stay away. I am using a huge code base with millions of lines of code so maybe it isn't finishing indexing and this is what causes the error?

I found it in another thread but ctrl + shift + p > index workspace is how I am reindexing.

I have tried uninstalling and installing this extension from scratch but that did not fix it.

I've got the exact same behavior here
Intelephense v1.5.4
VSCode v1.49.3
Windows NT x64 10.0.18363

@phuze
Copy link

phuze commented Oct 13, 2020

I'm seeing the same behaviour as well -- some built-in functions are throwing an Undefined function warning. strtoupper and str_replace are a couple examples.

Undefined function 'MyProject\MyApp\Helpers\str_replace'. intelephense(1010)

I've tried re-installing the extension and changing the PHP environment version; neither having an effect. I also have no other extensions installed which provide similar functionality, that may cause some sort of conflict.

Intelephense: 1.5.4
VSCode: 1.50.0
PHP Language Basics: enabled
PHP Language Features: disabled

@anrikun
Copy link

anrikun commented Oct 27, 2020

Same problem here.
What is strange is that I only have this problem with a project but not another one. Both have the same settings though...

EDIT: uninstalling, installing an older version then upgrading to latest magically fixed the problem...

@rantsh
Copy link

rantsh commented Oct 28, 2020

I'm not sure if this is of any help, but I was having this problem right now, reindexed the workspace and the errors went away.

For the sake of clarity (and perhaps future reference to myself) this is exactly what I did: I opened a file that was showing the wrong errors, then clicked on the option below and it all seems good now

image

@AleeeKoi
Copy link

Hello,
I got this undefined error using array_keys core function.
Downgrading from 1.5.4 > 1.5.3 make my IDE works again without showing wrong errors.

@geri777
Copy link

geri777 commented Oct 31, 2020

Yes, downgrading to 1.5.3 fixes the issue. I had the same problem - some projects worked well others not. I was using Version 1.5.4

image

After downgrading to 1.5.3 everything worked well

@miyu4u
Copy link

miyu4u commented Nov 16, 2020

Thx @geri777 @AleeeKoi .
I had same issue about built_in php function, but it fixed by downgrade to v1.5.3.

@Polfo
Copy link

Polfo commented Nov 17, 2020

I'm not sure if this is of any help, but I was having this problem right now, reindexed the workspace and the errors went away.

For the sake of clarity (and perhaps future reference to myself) this is exactly what I did: I opened a file that was showing the wrong errors, then clicked on the option below and it all seems good now

image

Intelephense: Index workspace solved the undefined function issue for me too. Changing PHP version did not.

@asheroto
Copy link

Hello,

I'm having the same issue as well. Downgrading to 1.5.3 and reloading is a workaround. I don't have the "Index workspace" option.

@anrikun
Copy link

anrikun commented Nov 29, 2020

@asheroto
Yes you have it. I thought the same at first.
You have to make sure you open Command palette (Ctrl+Shift+P) while the active tab is a PHP file.
Otherwise, when you type "Intelephense", the option won't show up.

@asheroto
Copy link

Got it. I had to cancel indexing, restart the program, then start indexing, thanks!

@parzibyte
Copy link

I'm not sure if this is of any help, but I was having this problem right now, reindexed the workspace and the errors went away.

For the sake of clarity (and perhaps future reference to myself) this is exactly what I did: I opened a file that was showing the wrong errors, then clicked on the option below and it all seems good now

image

Yes, it fixed the problem in my case. Thank you!

@adrianofoschi
Copy link

I have the same behavior with intelephense and neovim-lsp.
Someone suggests to "reindex workspace" in vscode. How to do it in neovim?

@firxworx
Copy link

It'd been a while since I touched PHP and when a small gig came my way figured I'd upgrade my tooling and workflows and tried Intelephense.

Right out of the gate, built-in PHP functions are flagged as undefined. I thought I'd add a comment in case its helpful to note that I was starting from a blank slate PHP wise: the VSCode on the machine I'm using has nothing else related to PHP installed that could be conflicting with this, no prior versions or old settings, etc. Running MacOS with the Apple built-in php locally.

Restarting VS Code did not help.
Changing the PHP version in the extension settings per @bosconian-dynamics suggestion above did not work for me.

Intelephense first thinks built-in functions belong to my namespace ("Undefined function 'ProjectNamesSpace\Plugin\defined'") and if I prefix them with a \ it still reports the same issue but without re my namespace ("Undefined function 'file_exists'").

@bosconian-dynamics
Copy link

bosconian-dynamics commented Apr 11, 2021

@firxworx have you tried "Index workspace" in the command palette as well?

Admittedly I didn't try it when I initially experienced the issue, but others have reported success with it. I haven't been able to replicate the issue once more to test it myself, sadly.

@fmp777
Copy link

fmp777 commented May 16, 2021

+1
Remote server via ssh setup
Intelephense 1.7.1
php version set to 5.6
Intelephense reindex didn't change anything. All core php functions are undefined yet show the definition as in screenshot. PHP Classes undefined with no definition. Custom classes built into the software I'm working on are fine.
image

Installing 1.7.0 and restarting VS Code fixes the problem.

[UPDATE]
Apparently only solved problem for the window i downgraded the version on. Another window, same SSH remote connection, still has the problem even after restart. The issue triggers a couple minutes after restarting vscode (large project). I can't seem to get my other window to work right, even after reindex/restarts.

@fmp777
Copy link

fmp777 commented May 17, 2021

Anyone here suggest a better extension then? even though I paid for the pro version, doesn't seem like the author wants to respond or fix critical bugs like this.

@bmewburn
Copy link
Owner

I'd like to solve the issue but I need to be able to reproduce it first. @fmp777 can you provide any output tab logs? Or a reproducible example/steps? Did you try uninstalling and reinstalling the extension?

@fmp777
Copy link

fmp777 commented May 20, 2021

I'm new to vscode, so i'm not sure what you mean by output tab logs. Downgrading to previous version helped most my windows, because most of them are smaller code bases. The largest codebase window is still producing this error. As mentioned previously these are remote ssh - and I had to vastly increase my server side file watcher limit to get vscode to work. The sheer size may be the problem for intelephense?

uninstall / install intelephense did not change the outcome

@blue928
Copy link

blue928 commented May 28, 2021

Hello, I'm having similar issues, which led me here. I'm on the most recent version of VS Code and the most recent version of intelephense.

Installed, restarted. Uninstalled, restarted, reinstalled, restarted - still didn't help. I've "re-indexed workspace" several times.

Also, I don't know if it's related, but as a test project I created a simple php script with default php functions as well as some defined functions. The PHP functions still came up as undefined. As well, the custom functions I defined cannot be found either leading to autocompletion not working.

Does it matter that I'm on the Apple M1 chip?

I'm also new to VSCode, coming from PHPStorm.

If you have a formal set of steps I can try to debug and report back, please let me know.

@asheroto
Copy link

It worked flawlessly until about 2 or 3 months ago.

@fmp777
Copy link

fmp777 commented May 29, 2021

I’m on Apple M1 too. Not sure it should matter, but never know.

@asheroto
Copy link

Using a custom built computer with Intel i7-4790k 4GHz.

@bmewburn
Copy link
Owner

There was an issue with apple M1 previously #1550 . You can also provide your own nodejs runtime with the intelephense.runtime setting which is worth trying for M1 users.

It's hard to see a pattern here. There seems to be a various OS and vscode/intelphense versions. Please post if there is any obvious errors in the output tab: View -> Output -> intelephense.

@AyoCodess
Copy link

AyoCodess commented Aug 25, 2021

we're still having issued with this. in-built functions are showing up as undefined on my Mac OS + VS Code.

@UzairKhalil
Copy link

Had same problem in v1.7.1 while using Laravel PHP. It was showing error on built-in functions. But just found the solution: go to extension setting @ext:bmewburn.vscode-intelephense-client and disable one by one Intelephense › Diagnostics: and you will see the error showing will stop.

@toovy
Copy link

toovy commented Nov 3, 2021

I had the same issue when I manually added the intelephense.stubs manually to my settings.json with only one item in the array (wordpress). It seems that the standard settings are then overwritten, thus all standard libraries are missing. Using the settings as described on stackoverflow helped me to preserve the standard libraries while adding the wordpress functions: https://stackoverflow.com/a/65275602

@dskzz
Copy link

dskzz commented Dec 15, 2021

Having this problem, I downgraded. Its only in one of my projects. Also interestingly, it only higlihgited some functions. Like date_default_timezone_set and json_decode. Those also didnt load up in my autocomplete. Also noteable that running top on the server I had ssh'd into was peggeing node at like 35+ CPU constantly. I would reindex, the errors would disappear, then on typing or saving something, the errors would reappear.

Here's the debug console from when it is not working
https://pastebin.com/UaY6h4QU

And one from after i downgraded:
https://pastebin.com/1eXuQCMg

Oh its breaking again on the older version. just for json_encode and header, empty works ok hash doesnt work. base64_encode ...

@working-name
Copy link

Oh snap I thought this issue was from Feb 2022 and I thought "wow that's a long time to let a counterproductive bug go".

Then I realized this was 2020! Probably safe to assume it's not getting addressed...
Screen Shot 2022-04-18 at 8 14 50 AM
Apparently both isdir and preg_replace do not exist 🤷

@roryashfordbentley
Copy link

Hi all,

After updating to a newer M1 Mac I had the same issue as described above and @toovy 's answer completely fixed the issue for me. I had defined stubs for Core and WordPress in my VSCode settings.json as follows:

"intelephense.stubs": [
    "Core",
    "wordpress"
],

It was only when I deleted all of the above that my definitions began to work again for core PHP functions like range() and array_flip().

It's hard to say if this issue is specifically related to M1 Macs/MacOS or the WordPress snubs but by completely removing the stubs definitions in settings.json everything works - I get Intelephense tooltips for both WordPress features and also for core PHP functions.

@pauljherring
Copy link

image

by completely removing the stubs definitions in settings.json everything works

I don't have them set at all:

$ uname -a
Linux hpdesktop 5.15.0-39-generic #42-Ubuntu SMP Thu Jun 9 23:42:32 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
$ code --version
1.68.1
30d9c6cd9483b2cc586687151bcbcd635f373630
x64
$ grep intelephense ~/.config/Code/User/settings.json 
    "intelephense.environment.phpVersion": "8.1.2",
$ php -v
PHP 8.1.2 (cli) (built: Jun 13 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

Intelephense version:

v1.8.2
---
Released on
16/04/2017, 15:34:28
Last updated
22/02/2022, 21:53:55
Identifier
bmewburn.vscode-intelephense-client

What's weird is that this system is (VSCode-)synced to another computer that doesn't demonstrate this problem...

image

(Note that is has picked up on a problem with $argv, so it is checking stuff.)

$ uname -a
Linux hpnotebook 5.13.0-41-generic #46-Ubuntu SMP Thu Apr 14 20:06:04 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

$ code --version
1.68.1
30d9c6cd9483b2cc586687151bcbcd635f373630
x64

$ grep intelephense ~/.config/Code/User/settings.json
    "intelephense.environment.phpVersion": "8.1.2",

$ php -v
PHP 8.0.8 (cli) (built: Jun 13 2022 13:51:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.8, Copyright (c), by Zend Technologies

@bkline
Copy link

bkline commented Aug 27, 2023

You can also provide your own nodejs runtime with the intelephense.runtime setting which is worth trying for M1 users.

I can confirm that I had to install my own nodejs (replacing the presumably broken one which is supplied) and register it in order to get the plugin to stop flooding the notification panel with bogus complaints that it couldn't find anything. If this is going to hit anyone with a vanilla M1 Mac I'm surprised the setup instructions make no mention of the need to do this.

[Edit] That didn't last long. After a couple of hours the bogus errors (caused by the plugin's failure to find any of the classes the site is using) are back.

@bkline
Copy link

bkline commented Aug 29, 2023

A number of comments have indicated that downgrading the plugin solved the problem. How does one downgrade?

@pauljherring
Copy link

How does one downgrade?

Ctrl-Shift-X to get the Extensions pane up, search for the extension you want, click the Down Arrow next to Uninstall and select Install another version... and look for the version you're after.

@bkline
Copy link

bkline commented Aug 29, 2023

Thanks, Paul. Unfortunately the downgrade didn't solve the problem (nor did "reindexing"). Guess it's time to research a better plugin.

@pbogut
Copy link

pbogut commented Aug 29, 2023

@bkline yeah, good luck with that. If you find LSP for PHP that is half decent let me know I will happily throw some cash their way. The truth is this is the best LSP for PHP. It's a bit sad that it's not OSS but still, @bmewburn does amazing work here.

@olsonpm
Copy link

olsonpm commented Feb 12, 2024

Unlike Rory's situation, I had to add "Core" to "intelephense.stubs" in my vscode settings. Unfortunate this wasn't on by default.

this is using v1.10.2 of the intelephense plugin on linux

@bmewburn bmewburn closed this as not planned Won't fix, can't repro, duplicate, stale Apr 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests