CakePHP 3 on Bluehost Console Commands Do Not Func

2019-07-10 05:09发布

问题:

I'm attempting to get a CakePHP 3 app setup on a shared hosting solution provided by Bluehost. When I attempt to bin/cake bake from a console (or any cake commands, really) I get the following output:

    ################################################################################
#
# Bake is a shell script for running CakePHP bake script
#
# CakePHP(tm) :  Rapid Development Framework (http://cakephp.org)
# Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
#
# Licensed under The MIT License
# For full copyright and license information, please see the LICENSE.txt
# Redistributions of files must retain the above copyright notice.
#
# @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
# @link          http://cakephp.org CakePHP(tm) Project
# @since         1.2.0
# @license       http://www.opensource.org/licenses/mit-license.php MIT License
#
################################################################################

# Canonicalize by following every symlink of the given name recursively
canonicalize() {
        NAME="$1"
        if [ -f "$NAME" ]
        then
                DIR=$(dirname -- "$NAME")
                NAME=$(cd -P "$DIR" > /dev/null && pwd -P)/$(basename -- "$NAME")
        fi
        while [ -h "$NAME" ]; do
                DIR=$(dirname -- "$NAME")
                SYM=$(readlink "$NAME")
                NAME=$(cd "$DIR" > /dev/null && cd $(dirname -- "$SYM") > /dev/null && pwd)/$(basename -- "$SYM")
        done
        echo "$NAME"
}

CONSOLE=$(dirname -- "$(canonicalize "$0")")
APP=$(dirname "$CONSOLE")

exec php "$CONSOLE"/cake.php "$@"
exit

My folder structure is currently set as :

/public_html
    /app
        /cakestuff

Generated with the code:

php composer.phar create-project --prefer-dist cakephp/app app

I've also attempted to set up the app outside of public_html, but I have no idea where to look for other potential issues.

It looks like my cake commands aren't actually being run.

回答1:

I had same problem on Hostmonster server, which is same or similar to Bluehost. The following appears to work:

php-cli bin/cake.php bake

This is same as suggestion from Arak Tai'Roth above, but with "php-cli".



回答2:

php bin/cake.php bake

This works for me on Windows.



回答3:

I finally got this resolved, posting an answer to help future users.

The issues are indeed with Bluehost, but I imagine you would have similar issues on any shared hosting that attempts to sanitize your CLI inputs. THere were couple of steps, but overall it wasn't that painful.

  1. Ensure you have a php.ini in which register_argv_argc has been set to On.
  2. Create the app using

    php composer.phar create-project --prefer-dist cakephp/app [app name]
    
  3. In the newly created [app name] folder, you need to edit your bin/cake command directly,you need to change line 39

from: exec php "$CONSOLE"/cake.php "$@"

to: exec php-cli -c /path/to/your/php.ini "$CONSOLE"/cake.php "$@"



回答4:

For godaddy shared hosting follow step as

1.First check your bin/cake file.If it contains only one exec command as this

exec php "$CONSOLE"/cake.php "$@"

then replace the file content with this Fix mistake in cake shell script

2.Goto host Cron Job page and use command

/usr/bin/php-cli /home/yourusername/public_html/path/to/your/bin/cake.php yourfilename


回答5:

I had this same issue and the above answers didn't help. I didn't change any of the cake files. I just followed the following instructions to get it to work.

1.) Add this line to .bashrc:

alias php-cli="/ramdisk/php/54/bin/php54-cli"

2.) cd to your cakephp app

3.) use this command to use the bake console:

php-cli bin/cake.php bake all <your table name here>