Zdravím,
rozhodl jsem se na sdíleném hostingu HostGator nainstalovat Composer a Drush. Vše proběhlo zdánlivě v pořádku, ale Drush mi vypisuje v některých částech chybu. Pokud jdu v PuTTY do adresáře /home3/user/.composer a zadám příkaz "drush status", příkaz proběhne v pořádku a vypíše:
PHP executable : /usr/bin/php-cli
PHP configuration : /opt/php54/lib/php.ini
PHP OS : Linux
Drush script : /home3/user/.composer/vendor/drush/drush/drush.php
Drush version : 8.1.2
Drush temp directory : /tmp
Drush configuration :
Drush alias files :
Pokud jdu ale do adresáře /home3/user/public_html/drupal/, kde mám nainstalovaný Drupal 8 nebo i když jdu do složky s Drupal 7 a opět zadám příkaz "drush status", vypíše se vždy chybové hlášení:
Warning: proc_open(): fork failed - Resource temporarily unavailable in phar:///home3/user/drush/includes/startup.inc on line 370
Warning: proc_get_status() expects parameter 1 to be resource, boolean given in phar:///home3/user/drush/includes/startup.inc on line 371
Warning: proc_close() expects parameter 1 to be resource, boolean given in phar:///home3/user/drush/includes/startup.inc on line 372
Toto chybové hlášení je u většiny příkazů co jsem zkoušel, ale např. příkaz "drush sql-dump > db.sql" se provede úspěšně.
Zkoušel jsem i různé verze Drushe, ale výsledek byl pokaždé stejný.
Vůbec netuším, kde by mohla být chyba. Už nad tím sedím desítky hodin a prohledávám internet, se vším jsem si zatím poradil, ale zde opravdu netuším, co je špatně. Třeba je to nějaká malichernost, vše se teprve učím, ale zatím je to pro mne nepřekonatelný problém, takže děkuji všem za rady a každou pomoc.
Ano, drush píše tyto warningy v případě, že nemá potřebnou verzi PHP. Pokud si ale vzpomínám, když jsem to řešil na vlastním serveru, byly ty hlášky sice otravné, ale neměly vliv na funkci drushe.
Jinak ano, PHP, které se použije pro sestavení webové stránky může být jiné verze nebo jiné konfigurace, než to, které máte k dispozici v příkazovém řádku. To je často pro spoustu uživatelů matoucí, když zkoumají, proč jim něco nefunguje a hledí do nastavení php v prohlížeči přes phpinfo().
Zkuste na fóru HostGatoru pohledat PHP Cli nebo napsat jejich podpoře. Osobně si myslím, že to změnit nepůjde, ale možná se pletu a je to otázka nějakého přepínače někde v jejich cPanelu.
Přišel jsem na jediný příkaz, který mi fungoval, a sice "drush sql-dump > db.sql". Všechny ostatní skončily onou chybou.
Jinak přes cPanel mohu nastavit pro konkrétní webovou prezentaci verzi PHP. Problém je v tom, že výchozí verze je 5.4.45 a pokud chci jinou, nastavuje se to přes .htaccess tímto kódem:
# Use PHP70 as default
AddHandler application/x-httpd-php70 .php
suPHP_ConfigPath /opt/php70/lib
A do .htaccess už Drush zřejmě nekouká a já nevím jak jinak mu sdělit, že mám na serveru k dispozici i novější verzi. Na podporu jsem psal, ale slušnou formou mi sdělili, že tento druh problémů neřeší.
Tohle celé potřebuji v podstatě jen kvůli modulu Pathauto na Drupalu 8, protože ten údajně funguje jen s verzí CTools 8.x-1.x, která již není ke stažení a verze CTools 8.x-3.x při použití vypisuje toto chybové hlášení:
Entity/field definitions
Mismatched entity and/or field definitions
The following changes were detected in the entity type and field definitions.
Obsah - Pole URL alias je potřeba odinstalovat.
Termín taxonomie - Pole URL alias je potřeba odinstalovat.
A bylo mi řečeno, že tohoto chybového hlášení se zbavím právě příkazem "drush entity-updates".
Takže celý Drush řeším jenom kvůli tomuto jedinému příkazu, nevím jak moc velký je to problém, ale bojím se, že kdyby tento problém ignoroval, musel bych později celý web tvořit znovu od nuly.
Jo, to mi také píše, ale protože to zjevně nemá vliv na funkci, nechává mě to zatím chladným :-)
Tak bych řekl, že jsem přišel na to, kde je zakopaný pes. Drush 8.1.2 vyžaduje PHP ve verzi 5.5.9 a vyšší. Já si sice nastavil, že pro danou instalaci Drupalu 8 chci používat PHP ve verzi 7, ale výchozí verze pro hosting je 5.4.45 a ačkoliv mi phpinfo ukazuje opravdu verzi PHP 7, Drush vidí 5.4.45. Jiná verze PHP se nastavuje přes .htaccess a do toho Drush asi nekouká. Našel jsem asi i řešení mého problému a sice předhodit Drushi novější verzi PHP, avšak žádný z pěti příkazů, které jsem našel a měly se zadat do souboru .bashrc, nefunguje.
Zkoušel jsem:
export PHP_OPTIONS='-d include_path=".:/opt/php56/lib/php"'
export DRUSH_PHP=/opt/php56/lib/php
alias drush='DRUSH_PHP=/opt/php56/lib/php /home3/crash/public_html/testing/drush/drush'
alias drush='/opt/php56/lib/php ~/public_html/testing/drush/drush.php'
alias php='/opt/php56/lib/php'
PHP_INI="/home3/crash/php.ini"
Bohužel nic z toho nefunguje a v podstatě jsem vyčerpal všechny možnosti, které mě napadly. Můžete mi někdo prosím poradit?