Pydio segfault on samba share with spaces

I’m trying for the first time pydio (poc) so maybe I’m doing something wrong. I have activated the samba plugin, and in the web interface I can browse any samba shares. It’s working fine. But, the indexation is not working and seems to get stuck.

So I run the indexation with the CLI and I get this error:

[root@pydio-test pydio]# /opt/rh/rh-php56/root/usr/bin/php /usr/share/pydio/cmd.php -u=madko -a=index -r=samba
Please enter the password: 
*****************************
Current User is 'madko'
*****************************
Applying action 'index' on workspace Samba (3b683f9zz3ddfbcb960a670e7fa5b81)
<?xml version="1.0" encoding="UTF-8"?><tree ><message type="ERROR">FILE_IS_A_DIRECTORY opening remote file \TEST\SUBDIR\0 -</message></tree>
PHP Fatal error:  FILE_IS_A_DIRECTORY opening remote file \TEST\SUBDIR\0 - in /usr/share/pydio/plugins/access.smb/smb.php on line 280
PHP Fatal error:  Access to undeclared static property: Pydio\Access\Driver\StreamProvider\SMB\SMBAccessWrapper::$crtZip in /usr/share/pydio/plugins/access.smb/SMBAccessWrapper.php on line 198
Segmentation fault

So I have this directory “\TEST\SUBDIR\0 – TEST”, it seems that spaces in names are a problem ??

I’m using pydio-8.0.1-2.el7.centos.noarch

PS: have ask same question on other pydio forum, no response, then on github, same still no response, then on twitter, same still noone, so I hope I will have some help here. Thanks

Best regards,
Edouard

Not sure that it works but can you test with elasticsearch

  1. Install elasticsearch https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-centos-7
  2. apply this patch: https://github.com/pydio/pydio-core/commit/f9102faf291b363435e3a00b0acfa9c20317fa26
  3. then install composer and go to plugins/index.elasticsearch then composer install or composer update
    https://getcomposer.org/download/
  4. Configure Pydio >> Settings >> Feature plugins >> enable index elasticsearch plugin
  5. go to PYdio settings >> Workspace >> open samba workspace, remove index.lucense and add index.elasticsearch

I already have a ELK cluster so I will try that.

Does it mean that the samba plugin and lucene indexer are not working, and that they won’t be fixed ?

Hello,

I could not reproduce this error on CentOS 7 with windows 2012 Samba share.
Im using pydio-8.0.1-2.el7.centos.noarch as well.

Note: You should launch the indexation process with “apache” user. If you launched it with root, you should delete rm -rf /var/cache/pydio/indexes/* and relaunch this process.

Did you try to launch the index from GUI ?


I tried to launch from the GUI and it’s stuck. So that’s why I tried from CLI. And this is how I found that with a basic setup, the indexer segfaulted.

What do you mean windows 2012 Samba share ? Is it a windows server or a samba server (=Linux) ? I’ve got the problem with a Samba server.

And most of my dirs in the samba share have spaces, and are not readable. I will try to run my playbook again.

I also have this error:

[roott@pydio0 ~]# su -c "/opt/rh/rh-php56/root/usr/bin/php /usr/share/pydio/cmd.php -u=admin -a=index -r=anonymous" apache -s /bin/bash
Please enter the password: 
*****************************
Current User is 'admin'
*****************************
Applying action 'index' on workspace anonymous (f5b5da2b5ec1430b11a7dd1a508bab9c)
<?xml version="1.0" encoding="UTF-8"?><tree ><message type="SUCCESS">Indexation launched</message><consume_channel/></tree>

PHP Fatal error:  Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error response [url] http://192.168.2.51/?get_action=clear_cache_key [status code] 404 [reason phrase] Not Found' in /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:89
Stack trace:
#0 /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/Subscriber/HttpError.php(33): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Message\Request), Object(GuzzleHttp\Message\Response))
#1 /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/Event/Emitter.php(108): GuzzleHttp\Subscriber\HttpError->onComplete(Object(GuzzleHttp\Event\CompleteEvent), 'complete')
#2 /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/RequestFsm.php(91): GuzzleHttp\Event\Emitter->emit('complete', Object(GuzzleHttp\Event\CompleteEvent))
#3 /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/RequestFsm.php(132): GuzzleHttp\RequestFsm->__invoke(Object(GuzzleHttp\Transaction))
#4 /usr/share/pydio/core/vendor/react/promise/src/Fulfill in /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 89

Indexation still not working

hi again,
is

the internal address of your pydio server? the CLI cmd tries to tell the Pydio server to clear the cache here.

Regarding the very first error with $crtZip static property what’s your PHP version?

Hello,

Please reset the indexation data by removing /var/cache/pydio/indexes/*
then launch indexaton from GUI in two case:

  1. with cli = enable
  2. CLI = disable
    CLI option is in Pydio Settings >> Main Options and please make sure max_execution_time of php.ini is long enough for this process if CLI=disable

I mean a samba share create by windows 2012 (in my case it’s accessible via \FileServer\share on windows)

Hi and thanks all for your help

192.168.2.51 is indeed my pydio server. I’m following the official doc for installation on CentOS, so my php version is from SCL/Epel/REMI somewhere around 5.6.

192.168.2.70 is a new samba server and it’s seems that on this one there is no segfault.

php max_execution_time is 300 as the documentation suggested.

I will try to reset indexation.

Best regards

I think I will have to reinstall pydio, it’s now broken again even if I haven’t had the time to do any of your suggestion. I can log in, but can’t switch workspace. It keeps asking me my workspace credential, and go back to the default workspace.

Can’t find any error, just this one :

[Wed Dec 13 07:36:41.365053 2017] [:error] [pid 1211] [client 192.168.2.31:52262] PHP Fatal error: Call to a member function getPref() on null in /usr/share/pydio/plugins/core.notifications/RecentListManager.php on line 59, referer: http://192.168.2.51/pydio/welcome/

Can I clean everything and start again ? or you need more data ?

There is one option in workspace config and you may tick on this checkbox !!!

But I want the credential, the problem is that after entering it, it loads the previous workspace. Then a reclick on the workspace I want, pydio asks again for the credential, but still doesn’t load the workspace. etc this part (at least) was working fine a while ago. I will reinstall this VM, rerun the playbook.

Ok so VM has been recreated and installed the same way as before (using an ansible playbook).

Client : Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0
Crypto Extension Detected : OpenSSL
Command Line Available : Yes
DOM Enabled : Yes
Exif Enabled : Yes
GD Enabled : Yes
Upload Max Size : 200M
Memory Limit : 128M
Max execution time : 300
Safe Mode : 0
Safe Mode GID : 0
Xml parser enabled : 1
Server OS : Linux
Session Save Path : /var/opt/rh/rh-php56/lib/php/session
Session Save Path Writeable : Yes
PHP Version : 5.6.25
Locale : fr_FR.UTF-8
Directory Separator : /
PHP Opcode Cache extension loaded : Yes
PHP INTL extension loaded : Yes
PHP Output Buffer disabled : Yes
PHP File Uploads enabled : Yes
Magic quotes disabled : Yes
Upload Tmp Dir Writeable : Yes
PHP Upload Max Size : 209715200
PHP Post Max Size : 209715200
Users enabled : Yes
Guest enabled : No
Writeable Folders : [<b>pydio</b>:true]
Zlib Enabled : Yes

Then I activate samba share plugin. And then I create a new workspace with this driver.
I enter IP address : 192.168.2.70 (in my case)
URI: Anonymous

Is it ok ?
Here is my smb.conf :

[Anonymous]
  comment = Anonymous File Server Share
  path = /srv/samba/anonymous
  browsable =yes
  writable = yes
  guest ok = yes
  read only = no
  force user = nobody

From my pydio VM access to this samba share is fine :

[root@pydio0 ~]# smbclient //192.168.2.70/Anonymous -U " "%" "
OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> dir
  .                                   D        0  Sun Dec 10 12:58:57 2017
  ..                                  D        0  Sun Dec 10 11:29:22 2017
  01 entrants                         D        0  Sun Dec 10 12:58:56 2017
  02 deploiement                      D        0  Sun Dec 10 11:31:02 2017
  03 livraison                        D        0  Sun Dec 10 11:31:03 2017
  pydio                               D        0  Sun Dec 10 13:00:16 2017

		8377344 blocks of size 1024. 6320116 blocks available
smb: \> 

But when I try to access this workspace, I don’t see anything. tcpdump shows nothing from pydio. Is it normal ? The workspace appears empty but as if it was working. Trying to create dir/files fails with error “directory/file already exists” (which is false).

Ahha; ok, may you enter incorrect credential, if it’s ldap user, it requires domain. Try with
user: domain\user_name
or user: user_name@domain.com

Note: If you are running centos, try to turn of selinux before testing.

SELinux is indeed in permissive mode (just for testing)

No LDAP. Credentials are working fine in smbclient. But have you seen my previous post? Now on fresh install it doesn’t seem to connect to samba anymore…

does the samba driver support anonymous login ? Because if I use a login/pass it seems to work ! So how do you set an anonymous samba share in pydio ?

PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error response [url] http://192.168.2.51/?get_action=clear_cache_key [status code] 404 [reason phrase] Not Found' in /usr/share/pydio/core/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:89

For this bug, do you know whys the CLI is not using the right URL ?
Because this http://192.168.2.51/?get_action=clear_cache_key can’t work, pydio core set an alias on /pydio so this URL should be http://192.168.2.51/pydio/?get_action=clear_cache_key ?

I’ve made a quick and dirty fix (and a PR on github) to fix that. Now indexation seems to work !!! At least on my samba test server. Will try soon on my production samba server where I was having the segfault.
Thank you for your help

If you have answer about setting anonymous samba share I am still interested.

Best regards,
Edouard